我们不管在生产环境还是开发环境,看日志是必不可少的,日志中往往包含很多有用的信息,有时候被DDOS
、上传非法文件等等,我们都需要通过日志分析。但是日志是跟访问量成正比的,你的访问量越大,你的各种级别日志就越多,日志文件大小会增长极快,服务器会很快消耗磁盘空间,这成个很严重的问题。不仅是这个,如果你是一个日志文件的话,你阅读、打开都要花费很大力气,那么怎么才能处理好这种情况?
logrotate
是个十分有用的工具,它可以自动对日志进行截断(或轮循)、压缩以及删除旧的日志文件。例如,你可以设置logrotate
,让/var/log/foo
日志文件每30天轮循,并删除超过6个月的日志。配置完后,logrotate
的运作完全自动化,不必进行任何进一步的人为干预。
yum -y install logrotate crontabs
apt-get update
apt-get install logrotate cron
软件相关文件
/etc/cron.daily/logrotate
/etc/logrotate.conf # 主配置文件
/etc/logrotate.d # 配置目录
系统会利用定时任务定时运行logrotate
,一般是每天一次。crontab
会每天定时执行/etc/cron.daily
目录下的脚本,而这个目录下有个文件叫logrotate
。我们只需要配置你所需要切割的参数就可以。
很多程序的会用到logrotate
滚动日志,比如nginx
。它们安装后,会在/etc/logrotate.d
这个目录下增加自己的logrotate
的配置文件。logrotate
什么时候执行
/etc/logrotate.d
下的配置呢?看到/etc/logrotate.conf
里这行,一切就不言而喻了。
include /etc/logrotate.d
常见参数
/var/log/nginx/*.log {
daily
dateext
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi \
endscript
postrotate
invoke-rc.d nginx rotate >/dev/null 2>&1
endscript
}
# 调用为/etc/lograte.d/下配置的所有日志调用logrotate
logrotate /etc/logrotate.conf
# 要为某个特定的配置调用logrotate
logrotate /etc/logrotate.d/log-file
logrotate -d /etc/logrotate.d/log-file
logrotate -vf /etc/logrotate.d/log-file
东西还是比较不错,可以满足常见需求了。还想了解可以看看这个 https://linux.cn/article-4126-1.html
,比较详细