日志切分神器--logrotate

日志切分神器--logrotate,第1张

概述Nginx日志切割神器

Blog:博客园 个人

概述

还在自己写定时切分日志的脚本?试试系统自带的logrotate工具吧!

logrotate是一个日志文件管理工具。用于分割日志文件,删除旧的日志文件,并创建新的日志文件,起到转储的作用,便于节省磁盘空间。

配置配置文件

linux系统默认安装logrotate,默认配置文件如下:

/etc/logrotate.conf:主配置文件,logrotate.d是一个目录,该目录里的所有文件都会被主动的读入/etc/logrotate.conf中执行。/etc/logrotate.d/:用于存放不同程序自定义切分配置运行原理

Logrotate是基于CRON来运行的,其脚本是/etc/cron.daily/logrotate,日志轮转是系统自动完成的。

实际运行时,Logrotate会调用配置文件/etc/logrotate.conf。可以在/etc/logrotate.d目录里放置自定义好的配置文件,用来覆盖Logrotate的缺省值。

/etc/cron.daily/logrotate脚本如下:

#!/bin/sh/usr/sbin/logrotate /etc/logrotate.confEXITVALUE=$?if [ $EXITVALUE != 0 ]; then    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"fiexit $EXITVALUE
配置参数说明
配置参数说明
create自动创建新的日志文件,新的日志文件具有和原来的文件相同的权限;因为日志被改名,因此要创建一个新的来继续存储之前的日志
rotate n保留多少个日志文件(轮转几次),n可以是0,1,2,3...,如果n为0,则没有备份。
dateext就是切割后的日志文件以当前日期为格式结尾
compress是否通过Gzip压缩转储以后的日志文件,如xxx.log-20201111.gz
nocompress不做Gzip压缩处理,与compress互斥
missingok在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。
notifempty如果日志文件为空,轮循不会进行。
create 0664 Nginx root以指定的权限创建全新的日志文件,同时logrotate也会重命名原始日志文件。
postrotate在所有其它指令完成后,postrotate里面指定的命令将被执行。
lograte命令

语法格式如下:

logrotate [OPTION...] <configfile>
参数说明
参数说明
-ddeBUG模式,测试配置文件是否有错误。
-f强制转储文件。
-m压缩日志后,发送日志到指定邮箱。
-s使用指定的状态文件。
-v显示转储过程。
案例

以Nginx日志切分为例,创建/etc/logrotate.d/Nginx

/var/log/Nginx/*log {    create 0664 Nginx root    daily    rotate 10    dateext    missingok    notifempty    compress    sharedscripts    postrotate        /bin/kill -USR1 `cat /run/Nginx.pID 2>/dev/null` 2>/dev/null || true    endscript}

手动强制切分日志:

/usr/sbin/logrotate -d -f /etc/logrotate.d/Nginx

效果如下:

总结

以上是内存溢出为你收集整理的日志切分神器--logrotate全部内容,希望文章能够帮你解决日志切分神器--logrotate所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/1015194.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存