linux日志转储&清除工具——logrotate使用记录
logrotate是一个linux自带得日志管理工具,可以起到日志得分割,清除,转储,邮寄,压缩功能。通过配置文件和linux得定时任务进行工作。
1.logrotate介绍
logrotate是一个linux自带得日志管理工具,可以起到日志得分割,清除,转储,邮寄,压缩功能。通过配置文件和linux得定时任务进行工作。
2.logrotate使用
2.1确认一下是否安装logrotate
主流linux都是安装好logrotate得,如果你的系统中找不到,可以使用apt-get或者yum命令来下载;
#查看logrotate版本
logrotate --version
2.2编写配置文件
- logrotate得配置文件位置
#全局默认配置,系统自带得,很多我们没配得配置都是取得这个配置文件得值
/etc/logrotate.conf
#子配置,我们自定义得配置文件都要放在这个文件夹下,例如nginx,tomcat得日志轮转
/etc/logrotate.d/
- logrotate得配置有很多我先举个例子,然后在逐一说明
# 配置清理(Nginx)日志
/usr/local/nginx/logs/*.log {
# 日志轮询周期,可以是 daily, weekly, monthly, yearly
daily
# 当日志文件达到最大值时进行额外切割
maxsize 200M
# 只存储十天
maxage 10
# 日志文件切割时添加日期后缀
dateext
# 可以解决同一天无法分割两次得问题
dateformat -%Y%m%d-%s
# 指定存储位置
olddir /export/nginx_log
# 如果没有日志文件也不报错
missingok
# 日志为空时不进行切换,默认为 ifempty
notifempty
# 转储后文件为新建权限设置为644
create 644 root root
# 所有的文件切割之后只执行一次下面脚本(重启nginx防止日志无法写入)
sharedscripts
# 轮转后执行以下脚本
postrotate
# 通知nginx重启保证写入--常规操作
if [ -f /usr/local/openresty/nginx/logs/nginx.pid ]; then
kill -USR1 $(cat /usr/local/openresty/nginx/logs/nginx.pid)
fi
endscript
}
| 参数 | 说明 |
| daily weekly monthly yearly |
日志轮转得频率;以daily为例,虽然每天会轮转但是具体轮转时间以cron得设定为主,也会受size配置项影响 |
|
size 100k minsize 100k maxsize 100k |
默认单位是 bytes。bytes (缺省) 及 KB (sizek) 或 MB (sizem) minsize 100k:如果到了cron定时得时间但是文件大小小于100k那么不转储; maxsize 100k:如果一个周期内定时任务跑过一次转储了,但是又到达了100k,会额外进行一次转储 |
| rotate 5 | 日志文件保留备份的个数。默认是 0 。 如:0 指没有备份;5 指保留最近的5个备份,其余的全部删除。 |
| maxage count | 保留多少天的日志文件。 如:5 指保留最近的5天的日志文件,其余的全部删除。 如果 日志文件按天转储,则 rotate 与 maxage 基本上是一样的。 |
| tabooext [+] list | 让 logrotate 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v, 和~ |
| missingok | missing ok ,在日志轮循期间,错误将被忽略。 例如 “文件无法找到” 之类的错误。 |
| copytruncate nocopytruncate |
copytruncate: 用于还在打开中的日志文件,把当前日志备份并截断。 把正在输出的日志拷 (copy) 一份出来,再清空 (trucate) 原来的日志。 nocopytruncate: 备份日志文件,但是不截断 。 |
|
create mode owner group |
create mode owner group:转储文件,使用指定的文件模式创建新的日志文件。 nocreate: 不建立新的日志文件。 如: create 644 root root |
| nocompress compress |
nocompress: 不压缩(默认) compress: 通过 gzip 压缩转储以后的日志。如 XXX.gz |
|
delaycompress |
delaycompress: 和 compress 一起使用时,转储的日志文件到下一次转储时才压缩。nodelaycompress: 覆盖 delaycompress 选项,转储同时压缩。 |
| prerotate endscript |
在所有其它指令完成 前 执行。这两个关键字必须单独成行 |
| postrotate endscript |
在所有其它指令完成 后 执行。这两个关键字必须单独成行 |
|
sharedscripts |
共享脚本,整个日志组运行一次脚本 。 如果没有 sharedscripts ,那么 每个日志文件 轮转完毕后 都会执行一次 |
| errors address | 转储时的错误信息发送到指定的 Email 地址。 |
| mail address nomail |
mail address : 把转储的日志文件发送到指定的 E-mail 地址 nomail : (默认)转储时不发送日志文件 |
| ifempty notifempty |
ifempty :if empty ,即使是空文件也转储(默认)。 notifempty :not if empty ,如果是空文件的话,不转储。 |
| olddir directory noolddir |
olddir directory :切割后的日志文件放入指定的目录,但是必须和当前日志文件在同一个文件系统。 例如:olddir /etc/log/nginx_log |
|
dateext |
是否添加日志后缀;一般配合dateformat使用默认是当前日期。格式是 -%Y%m%d 的后缀。 如:nginx_access.log --> nginx_access.log-20240905 |
|
dateformat |
对 dateext 的拓展,必须配合 dateext 使用 在V3.9.0 之前,只支持 %Y、%m、%d、 %s 参数。 %s 不是秒,是类似时间戳得一长串数字;配置%s可以解决当天得多次轮转,测试得时候可以用 在V3.9.0 及之后,支持 %H 参数。 如: dateformat -%Y-%m-%d 结果:nginx_access.log --> nginx_access.log-2021-01-20 注意: 文件名称中禁止出现分号(:) ,因为文件名称是不能含有分号的 |
| dateyesterday |
日期提前一天;cron表达式如果写的是每天12点触发一次,就要使用这个配置,让命名与真实日志时间匹配 如果cron是23点59分触发就不用这个配置 |
|
extension |
与 dateext 、dateformat 配合使用,指定文件的后缀。 如:extension .log 结果:nginx_access.log --> nginx_access-2021-01-20.log 说明:nginx_access.log , 文件名是nginx_access,后缀是.log, 文件名 + -%Y-%m-%d 格式的日期 + .log 后缀,结果是 nginx_access-2021-01-20.log |
3.使用logrotate命令
logrotate [OPTION...] <configfile>
-d, --debug :debug 模式,测试配置文件是否有错误。
-f, --force :强制转储文件。
-m, --mail=command :压缩日志后,发送日志到指定邮箱。
-s, --state=statefile :使用指定的状态文件。
-v, --verbose :显示转储过程
- 调试模式
logrotate -d /var/tmp/logtest/myTest_rotate
-
强制执行
logrotate -f /var/tmp/logtest/myTest_rotate
4使用crontab定时任务
#常用crontab命令
#创建或修改定时任务
crontab -e
#查看定时任务
crontab -l
创建一个每天23点59分执行得日志转储任务
#cron表达式从分开始 logrotate命令 -f强制执行 配置文件所在位置
59 23 * * * /usr/sbin/logrotate -f /etc/logrotate.d/nginx_rotate
可能会用到得bash命令
#打开文件夹
cd /etc
#创建一个新的文件newlogfile并把logfile中的内容复制进去如果文件已存在则会追加
cat /etc/logfile >> /etc/newlogfile
#查询所有含nginx得进程
ps aux | grep nginx
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)