配置前奏2
2025年5月31日大约 2 分钟
测试相关
测试(示例)
/usr/sbin/logrotate -d -f /etc/logrotate.d/sql
/usr/sbin/logrotate -d -f /etc/logrotate.d/
制造(示例)
head -c 10M < /dev/urandom >/data/log/nginx/access.log
测试执行
/usr/sbin/logrotate -f /etc/logrotate.d/sql
配置目录
/etc/logrotate.d/
创建切割日志目录
mkdir -p /data/log/mysql/days && mkdir -p /data/log/nginx/days && mkdir -p /data/log/php/days
模拟数据
head -c 10M < /dev/urandom >/data/log/nginx/access.log
配置示例:
mysql
/etc/logrotate.d/myql
/data/log/mysql/*.log {
daily
rotate 7
create
missingok
copytruncate
notifempty
nocompress
dateext
size 500K
olddir /data/log/mysql/days
sharedscripts
postrotate
/etc/init.d/nginx reload
endscript
}
logrotate -vf /etc/logrotate.d/mysql
nginx
/data/log/nginx/access.log
/data/log/nginx/nginx_error.log
参考
/data/log/nginx/*.log {
daily //每天
rotate 7 //备份7份
create //新建
missingok //在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。
copytruncate //用于还在打开中的日志文件,把当前日志备份并截断
notifempty //如果是空文件的话,不转储
nocompress // 不压缩
dateext // //这个参数很重要 就是切割后的日志文件以当前日期为格式结尾,如xxx.log-20131216这样,如果注释掉,切割出来是按数字递增,即前面说的 xxx.log-1这种格式
size 500K //达到500KB以后才切割
olddir /data/log/nginx/days
sharedscripts //运行postrotate脚本,作用是在所有日志都轮转后统一执行一次脚本。如果没有配置这个,那么每个日志轮转后都会执行一次脚本
postrotate // 在logrotate转储之后需要执行的指令
/etc/init.d/nginx reload
endscript
}
实际
/data/log/nginx/*.log {
daily
rotate 7
create
missingok
copytruncate
notifempty
nocompress
dateext
size 500K
olddir /data/log/nginx/days
}
测试
logrotate -vf /etc/logrotate.d/nginx
php
/data/log/php/php_errors.log
php
/data/log/php/*.log {
daily
rotate 7
create
missingok
copytruncate
notifempty
nocompress
dateext
size 500K
olddir /data/log/php/days
}
测试
logrotate -vf /etc/logrotate.d/php
Laravel项目配置
正式:
mkdir -p 项目路径/storage/app/public/sql/days
Laravel_SQL
项目路径/storage/app/public/sql/*.log {
daily
rotate 7
create
missingok
copytruncate
notifempty
nocompress
dateext
size 500K
olddir 项目路径/storage/app/public/sql/days
}
/usr/sbin/logrotate -f /etc/logrotate.d/sql