当 Tomcat 日志过大时,对外服务会停止。为解决这个问题,需要对日志进行管理。
具体方法步骤
利用Linux自带的logrotate程序来解决catalina.out的日志轮转问题
1.首先编辑logrotate.conf文件,打开compress选项(去掉注释)
[root@localhost ~]# cat /etc/logrotate.conf | grep -v "^$"| grep -v "#"
weekly
rotate 4
create
dateext
compress <<这一项
2.添加指定文件,在/etc/logrotate.d/目录下新建一个名为tomcat的文件(后面的注释要删掉)
[root@localhost ~]# cat > /etc/logrotate.d/tomcat <<EOF
/home/TianmaTomcat/logs/catalina.out{ #要轮转的文件
copytruncate # 创建新的catalina.out副本后,截断源catalina.out文件
su root root #用root权限
daily # 每天进行catalina.out文件的轮转
rotate 60 # 至多保留60个副本
missingok # 如果要轮转的文件丢失了,继续轮转而不报错
compress # 使用压缩的方式(节省硬盘空间;一个2~3GB的日志文件可以压缩成60MB左右)
size 16M # 当catalina.out文件大于16MB时,就轮转
}
EOF
############################################
参数说明:
copytruncate #备份日志并截断源文件
nocopytruncate # 备份日志文件不截断
dateext #使用当期日期作为命名格式
notifempty #当日志文件为空时,不进行轮转
daily # 每天进行文件的轮转
size 16M # 当文件大于16MB时,就会轮转
rotate 30 #指定日志文件删除之前转储的次数
############################################
如果要拷贝多个路径下的tomcat日志,可以这样配置
3.给文件赋权
chmod -R 664 /etc/logrotate.d/tomcat
3.执行方式
①自动执行原理
每天晚上crond守护进程会运行在/etc/cron.daily目录中的任务列表;
与logrotate相关的脚本也在/etc/cron.daily目录中。运行的方式为"/usr/bin/logrotate /etc/logrotate.conf";
/etc/logrotate.conf文件include了/etc/logrotate.d/目录下的所有文件。还包括我们上面刚创建的tomcat文件;
/etc/logrotate.d/tomcat文件会触发/usr/local/apache-tomcat-8.0.28/logs/catalina.out文件的轮转。
②手动执行:logrotate /etc/logrotate.conf
③只轮转刚刚的tomcat配置文件:logrotate --force /etc/logrotate.d/tomcat
logrotate -fv /etc/logrotate.d/tomcat (查看详细)
4、自动执行可能会出现权限不足的报错,这时,需要 配置定时任务来实现(每天执行一次)
crontab -e
0 0 * * * /usr/sbin/logrotate --force /etc/logrotate.d/tomcat
可以修改定时任务配置 crontab -e
或者删除 crontab -r
查看当前系统登录用户的Crontab命令集合 crontab -l
3、在 /etc/crontab 中添加环境变量,在可执行命令之前添加命令 . /etc/profile;/bin/sh,使得环境变量生效,例如:
20 03 * * * . /etc/profile;/bin/sh /var/www/runoob/test.sh
二、创建一个任务文件
1、命令行输入crontab -e会自动打开一个空文件:
# crontab -e
2、输入a或者i可以进入编辑状态,可输入任务代码。代码格式可以进入/etc/crontab查看
# cd /etc
# cat crontab
二、保存文件
先按Esc键,然后输入“:wq”
三、查看文件
保存成功的文件去哪里了呢?在/var/spool/cron/下面
# cd /var/spool/cron
# ls
这里可以看到一个root文件,因为我用的root账号登录,所以生成了一个root文件。
通过cat命令可以看到这个文件的内容就是前面编辑的内容。
参数配置
dateext 切换后的日志文件会附加上一个短横线和YYYYMMDD格式的日期,没有这个配置项会附加一个小数点加一个数字序号.
dateformat 配合dateext使用可以为切割后的日志加上YYYYMMDD格式的日期,如dateformat -%Y%m%d