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
- 在这个目录下有这么多日志文件,当我们遇到问题时应该查看哪个呢?
- 遇到问题查看catalina.out ,这个日志是核心日志,无论正确或者错误的访问信息,不管是Tomcat服务本身还是Tomcat上跑的应用(如zrlog)产生的日志都会记录到这个日志里。
- 两个manager日志是管理台相关的日志,不用关注。
- access_log是访问日志,记录的是客户访问站点的情况,这个日志也可以不用让它记录,而是在nginx代理上记录访问信息,所以也不用关注。
- 这个带日期的catalina.xxxx-xx-xx.log是catalina引擎相关的日志,可以认为是Tomcat服务本身的日志,这个也不用关注,因为它和catalina.out是重复的,也就是说这个日志中记录的内容在catalina.out这个日志中就有。
- localhost.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 "%r" %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,最好选择一个使用,避免逻辑混乱。如果不想用户lic使用crontab功能,可以将lic添加到/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时,就轮转
}