使用 logrotate 处理日志

Linux logrotate About 2,112 words

备注

默认的logrotate已经在/etc/cron.daily/logrotate定时任务下每日执行。

配置文件位置

/etc/logrotate.conf

/etc/logrotate.d/

配置选项说明

  • missingok:在日志轮循期间,任何错误将被忽略
  • compress:通过gzip压缩转储旧的日志
  • nocompress:不需要压缩时,用这个参数
  • copytruncate:用于还在打开中的日志文件,把当前日志备份并截断
  • nocopytruncate:备份日志文件但是不截断
  • create mode owner group:使用指定的文件模式创建新的日志文件
  • nocreate:不建立新的日志文件
  • delaycompress:和compress一起使用时,转储的日志文件到下一次转储时才压缩
  • nodelaycompress:覆盖delaycompress选项,转储同时压缩
  • errors address:专储时的错误信息发送到指定的Email地址
  • ifempty:即使是空文件也转储,这个是logrotate的缺省选项
  • notifempty:如果是空文件的话,不转储
  • mail address:把转储的日志文件发送到指定的E-mail地址
  • nomail:转储时不发送日志文件
  • olddir directory:转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
  • noolddir:转储后的日志文件和当前日志文件放在同一个目录下
  • prerotate/endscript:在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
  • postrotate/endscript:在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行
  • sharedscripts:所有的日志文件都轮转完毕后统一执行一次脚本
  • daily:指定转储周期为每天
  • weekly:指定转储周期为每周
  • monthly:指定转储周期为每月
  • rotate count:指定日志文件删除之前转储的次数,0指没有备份,5指保留5个备份
  • size size:当日志文件到达指定的大小时才转储,Size可以指定bytes(缺省)以及KB(sizek)或者MB

命令参数说明

logrotate --help

Usage: logrotate [OPTION...] <configfile>
  -d, --debug               Don't do anything, just test (implies -v)
  -f, --force               Force file rotation
  -m, --mail=command        Command to send mail (instead of `/usr/bin/mail')
  -s, --state=statefile     Path of state file
  -v, --verbose             Display messages during rotation
      --version             Display version information

Help options:
  -?, --help                Show this help message
      --usage               Display brief usage message

处理 Nginx 日志

/var/log/nginx/*.log {
        daily
        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
}

手动执行 logrotate

注意:**仅执行一次**,定时执行需加入crontab

强制执行-f-f=force),冗长的-v-v=verbose),调试信息默认携带-v

logrotate -vf /etc/logrotate.d/nginx
Views: 4,192 · Posted: 2019-07-22

————        END        ————

Give me a Star, Thanks:)

https://github.com/fendoudebb/LiteNote

扫描下方二维码关注公众号和小程序↓↓↓

扫描下方二维码关注公众号和小程序↓↓↓


Today On History
Browsing Refresh