1.切割
正确日志 和 错误日志 都需要切割
logrotate 切割日志 (使用dateext参数进行切割)
1 |
vim /etc/logrotate.conf |

不推荐用apache自带的切割功能,因为他只会把日志切割成一天一天的,但是不会轮替换,需要人为手动删除不必要的日志,它的功能不够完善,而且他也只能切自身日志,不能切其他日志,而linux自带的这个logrotate他可以切换轮替所有的日志文件。(无论是rpm包日志还是源码包日志)
切割命名问题
1 2 3 4 5 6 7 8 9 10 11 12 13 |
1.如果你的logrotate.conf配置文件里没有 "dateext" 这个配置 那么默认命名会以 1 2 3 4 5 数字来区分, 例如: alert.1 代表第一天 alert.2 代表第二天 alert.3 代表第三天 2.如果有dateext这个配置 (Readhat 6开始 默认就是dateext) 那么日志的格式就会是 alert-20160708 alert-20160709 alert-20160710 |
logrotate 配置文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# see "man logrotate" for details # rotate log files weekly weekly #每周对日志文件进行一次轮替,如果写在这里,就是通用配置,他会对以下所有日志都生效,他的优先级最高 #这么说吧,如果下面的服务日志没有定义轮替时间,就以他为准,如果定义了就以,服务定义的为准 # keep 4 weeks worth of backlogs rotate 4 #保存4个日志文件,也就是说如果进行了5次日志轮替,就会删除第一个备份日志,这个也是通用配置 #如果下面的服务日志没有定义保存数量,就以他为准,如果定义了就以,服务定义的为准 # create new (empty) log files after rotating old ones create #轮替的时候,会将老老的日志删除,然后新建新的日志 # use date as a suffix of the rotated file dateext # uncomment this if you want your log files compressed #compress #压缩,节省空间,但是没法直接看 # RPM packages drop log rotation information into this directory include /etc/logrotate.d #包含/etc/logrotate.d 的所有配置文件(类似于加载nginx的配置文件一样.加载路径下的所有.conf文件,conf文件里记录的就是日志配置信息,就像下面的一样) #你也可以直接在下面配置(就像在nginx.conf里添加配置一样) # no packages own wtmp and btmp -- we'll rotate them here /var/log/wtmp { monthly #声明wtmp轮替时间 月 create 0664 root utmp #指定创建日志的权限,所有者和所属组 minsize 1M #如果他的日志大小小于1M则不轮循 rotate 1 #日志保存数量 } /var/log/btmp { missingok monthly create 0600 root utmp rotate 1 } # system-specific logs may be also be configured here. |
以上配置的文件详细参数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
daily 日志轮替周期是每天 weekly 日志轮替周期是每周 monthly 日志轮替周期是每月 rotate 保留的日志个数 0 则不保存 compress 日志轮替时,是否对日志进行压缩 create mode owner group 建立新日志,同时指定新日志的权限,所有者与所属组 例如:create 0600 root utmp mail address 当日志轮替时输出内容通过邮件形式发送到指定邮箱 例如:mail xxxx@125.com missingok 如果日志不存在,则忽略该日志的警告信息 notifempty 如果日志文件为空,则不进行日志轮替 minsize 日志轮替最小值,也就是日志到达这个最小值才会轮替,否则就算时间到了也不轮替 size 日志只有大于指定大小才会发生轮替,否则就算时间到了也不轮替 dateext 使用日期作为日志轮替文件的后缀,如:http-20170810 #下面的三个如果想要执行脚本必须有sharedscripts这句 sharedscripts 在此关键词之后脚本只执行一次 prerotate/endscript 在日志轮替之前执行脚本命令endscript表示prerotate脚本结束 postrotate/endscript 在日志轮替之后执行脚本命令endscript表示postrotate脚本结束 你可以通过 man postrotate 查看这几个命令的案例 |
有个注意点,apache 重启后也需要重启下 rsyslogd 否则他的日志输出不会生效
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
如果想要更改配置而不需停止并重新启动服务,则使用该命令。在对配置文件作必要的更改后,发出该命令以动态更新服务配置。[平滑重启] kill -HUP $(/bin/cat /usr/local/nginx/logs/nginx.pid) kill -HUP $(/bin/cat /var/run/syslogd.pid) 只有吧nginx 和 rsyslogd都重启 你的日志才会生效。 例如: 在配置中药执行脚本,可进行如下书写格式: sharedscripts postrotate kill -HUP $(/bin/cat /usr/local/nginx/logs/nginx.pid) endscript |
将自己的日志加入轮替
如果你想便于自己管理方便,建议将你的每个日志脚本,写成单一文件保存在/etc/logrotate.d/下,logrotate.conf会通过include去加载这些文件,和在配置文件中是一样的
1 |
例1: |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#如果我们需要把nginx的日志加入日志轮循,则需要重启rsyslogd服务,然后再重启下nginx服务 #也就是说,如果我需要把服务日志重启,那么一定也要先把rsyslogd日志重启 /usr/local/nginx/log/*.log { dayly #每天轮循一次 rotate 30 #保存文件30个 missingok #如果日志不存在,则忽略该日志的警告信息 sharedscripts #执行脚本 postrotate #在日志轮循完后执行脚本平滑重启nginx和rsyslogd /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true /bin/kill -HUP $(/bin/cat /usr/local/nginx/logs/nginx.pid) endscript } |
如果想要在切割后顺道移动备份到其他目录
1 |
find /app/app/service/logs -mtime +1 -name '*log-*' -exec mv {} /data/javalogs \; |
例2:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
/var/log/alert.log { weekly rotate 6 missingok sharedscripts prerotate #在轮替之前取消 alert.log 的a 属性 /usr/bin/chattr -a /var/log/alert.log endscript sharedscripts postrotate #在轮替之后加上 alert.log 的a 属性 /usr/bin/chattr +a /var/log/alert.log endscript sharedscripts postrotate #在最后再重启一下rsyslod服务 否则不生效 /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true endscript } |
logrotate 一些命令
1 2 3 4 5 |
logrotate [选项] 配置文件名 参数: -v :显示日志轮替过程 -f :强制日志进行轮循,不管是否已经符合轮循条件 |
1 2 |
logrotate -v /etc/logrotate.d/nginx logrotate -f /etc/logrotate.d/nginx #强制轮循 |
注意:如果我需要把服务日志重启,那么一定要先把rsyslogd日志重启,如果日志轮替加入的是服务则你就需要这么做,如果不是服务则不需要
- 本文固定链接: https://www.yoyoask.com/?p=1587
- 转载请注明: shooter 于 SHOOTER 发表