运维过程中经常会发现一些 C 程序,每天会生产这样的日志: /home/admin/app_name/logs/access_log
那么天长地久,如果这个程序不会自动去轮转这个日志,那么这个日志文件则会越来越大,我们其实可以使用 linux 里面的 logrotate 来实现自定义日志轮转.
方法如下:
一、建立轮转配置文件:
- #vi /etc/logrotate.d/app_name
- /home/admin/app_name/logs/access_log
- {
- daily
- dateext
- copytruncate
- nocompress
- rotate 15
- }
// /home/admin/app_name/logs/access_log 指明日志文件的绝对路径
// daily 表示日志每天轮转一次
// dateext 表示切换后的日志文件会附加上一个短横线和YYYYMMDD格式的日期,如果没有这个配置项则会附加一个小数点加一个数字序号
// copytruncate 表示在复制当前日志文件后,将日志文件清空;而不是将当前日志文件改名后创建一个新的
// nocompress 表示不压缩切换后的日志文件
// rotate 15 表示保存15份旧的日志文件
// 更多配置请参考 man logrotate 手册.
二、重启 syslogd 服务 (或 syslog-ng)
- service syslogd restart
- /usr/bin/killall -HUP syslogd
- service syslog-ng restart
- /usr/bin/killall -HUP syslog-ng
三、测试 (执行配置文件,强制进行一次日志轮转):
- logrotate -f /etc/logrotate.d/app_name
四、扩展其他日志切换操作:
- #ls /etc/logrotate.d/
- acpid conman cups httpd mgetty ppp psacct rpm samba sa-update setroubleshoot snmpd syslog-ng tsar up2date
- # 针对某个配置对其日志进行切换:
- logrotate -f config_name
- # 强制切换所有配置:
- logrotate -f /etc/logrotate.conf