Tomcat的日志

  • Tomcat的日志在/usr/local/tomcat/log目录下
[root@localhost logs]# ls
catalina.2019-02-25.log  catalina.out                 host-manager.2019-02-26.log  localhost.2019-02-26.log             localhost_access_log.2019-02-26.txt  manager.2019-02-26.log
catalina.2019-02-26.log  host-manager.2019-02-25.log  localhost.2019-02-25.log     localhost_access_log.2019-02-25.txt  manager.2019-02-25.log
  • 在这个目录下有这么多日志文件,当我们遇到问题应该cha 查看哪个呢?
  • 遇到问题查看catalina.out,这个日志是核心日志,无论正确或者错误的访问信息,不管是Tomcat服务本身还是Tomcat上跑的应用(如zrlog)产生的日志都会记录到这个日志里
  • manager日志是管理台相关的日志,不用关注
  • access_log是访问日志,记录的是客户访问站点的情况,这个日志可以yi不用让它记录,而是在nginx代理商记录访问信息,所以也不用关注
  •  这个带日期的catalina.xxxx-xx-xx.log是catalina的引擎相关的日志,可以认为是Tomcat服务本身的日志,这个也不用关注,因为它和catalina.out是重复的,也就是说这个日志中记录的内容在catalina.out这个日志中就有
  • locashhost xxxx-xx-xx.log,它主要是应用初始化(listener,filter,servlet)未处理的异常最后被Tomcat捕获而输出的日志,也不用太关注

 日志配置文件conf/logging.properties

  • 这里面主要定义了非访问日志的一些属性,比如日志路径、哪些日志记录到哪个文件中(名字)、日志级别、存储周期等信息,这个配置文件我们

一般都不会去更改。而访问日志的格式、路径是在server.xml中定义的,如下是在server.xml配置文件中为访问日志的配置片段:

 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

 catalina.out文件并没有日期后缀,意味着该文件不会自动切割,它会越写越大、直到将硬盘的容量写满、解决这个问题的办法有两个。

一:新增一个计划任务,每隔一段时间就清空该文件

crontab的任务计划格式

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)                   ##分
# |  .------------- hour (0 - 23)					##时
# |  |  .---------- day of month (1 - 31)			##日
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...	##月
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR	##周 sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed			##执行的命令
  • 定时清空catalina.out
[root@localhost etc]# crontab -l
0 0 */5 * * echo "" > /usr/local/tomcat/logs/catalina.out

补充:

  • 有两个文件可以控制crontab能否被其他用户使用,/etc/cron.deny和/etc/cron.allow系统默认保留的是/etc/cron.deny,最好选择一个使用,避免逻辑混乱。如果不想用户使用crontab功能,可以将用户添加到/etc/corn.deny文件
  • crontab命令
  • crontab -u只有root用户能够使用该参数,也就是帮其他用户添加删除crontab任务计划
  • crontab -e编辑crontab的工作内容
  • crontab -l查阅crontab的工作内容
  • crontab -r删除所有的crontab的内容,如果要删除一项,可以使用crontab -e去删除一项
  • 使用crontab来新建了任务计划之后,该项计划就会被记录到/var/spool/cron里面,且是以账号来判别的。比如,root用户建了任务计划就会被写到/var/spool/cron/root中;另外cron执行的每一项工作都会被写到/var/log/cron这个日志文件中,所有如果不知道系统是否被恶意运行过cron,可以查看该日志文件

二:用系统自带的logrotate工具切割

  • 在logrotate.d下创建Tomcat的切割配置文件
vi /etc/logrotate.d/tomcat
  • 在配置文件中添加如下内容
    /usr/local/tomcat/logs/catalina.out  {
    copytruncate    # 创建新的catalina.out副本后,截断源catalina.out文件
    daily    # 每天进行catalina.out文件的轮转
    rotate 7     # 至多保留7个副本
    missingok    # 如果要轮转的文件丢失了,继续轮转而不报错
    compress     # 使用压缩的方式(节省硬盘空间)
    size 16M     # 当catalina.out文件大于16MB时,就轮转
    }
03-05 19:02