日志切割工具-Logrotate实现nginx日志切割
时间:2022-07-22
本文章向大家介绍日志切割工具-Logrotate实现nginx日志切割,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
我们不管在生产环境还是开发环境,看日志是必不可少的,日志中往往包含很多有用的信息,有时候被DDOS
、上传非法文件等等,我们都需要通过日志分析。但是日志是跟访问量成正比的,你的访问量越大,你的各种级别日志就越多,日志文件大小会增长极快,服务器会很快消耗磁盘空间,这成个很严重的问题。不仅是这个,如果你是一个日志文件的话,你阅读、打开都要花费很大力气,那么怎么才能处理好这种情况?
logrotate
是个十分有用的工具,它可以自动对日志进行截断(或轮循)、压缩以及删除旧的日志文件。例如,你可以设置logrotate
,让/var/log/foo
日志文件每30天轮循,并删除超过6个月的日志。配置完后,logrotate
的运作完全自动化,不必进行任何进一步的人为干预。
安装Logrotate
- centos
yum -y install logrotate crontabs
- ubuntu
apt-get update
apt-get install logrotate cron
软件相关文件
/etc/cron.daily/logrotate
/etc/logrotate.conf # 主配置文件
/etc/logrotate.d # 配置目录
了解Logrotate原理
系统会利用定时任务定时运行logrotate
,一般是每天一次。crontab
会每天定时执行/etc/cron.daily
目录下的脚本,而这个目录下有个文件叫logrotate
。我们只需要配置你所需要切割的参数就可以。
很多程序的会用到logrotate
滚动日志,比如nginx
。它们安装后,会在/etc/logrotate.d
这个目录下增加自己的logrotate
的配置文件。logrotate
什么时候执行
/etc/logrotate.d
下的配置呢?看到/etc/logrotate.conf
里这行,一切就不言而喻了。
- /etc/logrotate.conf
include /etc/logrotate.d
常见参数
- dateext: 切割的日志带上日期
- monthly: 日志文件将按月轮循。其它可用值为‘daily’,‘weekly’或者‘yearly’。
- rotate 5: 一次将存储5个归档日志。对于第六个归档,时间最久的归档将被删除。
- compress: 在轮循任务完成后,已轮循的归档将使用gzip进行压缩。
- delaycompress: 总是与compress选项一起用,delaycompress选项指示logrotate不要将最近的归档压缩,压缩将在下一次轮循周期进行。这在你或任何软件仍然需要读取最新归档时很有用。
- missingok: 在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。
- notifempty: 如果日志文件为空,轮循不会进行。
- create 644 root root: 以指定的权限创建全新的日志文件,同时logrotate也会重命名原始日志文件。
- postrotate/endscript: 在所有其它指令完成后,postrotate和endscript里面指定的命令将被执行。在这种情况下,rsyslogd 进程将立即再次读取其配置并继续运行。
- sharedscripts: 在所有的日志文件都轮转完毕后统一执行一次脚本。如果没有配置这条指令,那么每个日志文件轮转完毕后都会执行一次脚本。
定制化nginx日志切割
/var/log/nginx/*.log {
daily
dateext
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
- 手动调用
# 调用为/etc/lograte.d/下配置的所有日志调用logrotate
logrotate /etc/logrotate.conf
# 要为某个特定的配置调用logrotate
logrotate /etc/logrotate.d/log-file
- 调试配置 模拟日志切割
logrotate -d /etc/logrotate.d/log-file
- 当你设置的条件没有满足时 我们也可以通过使用‘-f’选项来强制logrotate轮循日志文件,‘-v’参数提供了详细的输出
logrotate -vf /etc/logrotate.d/log-file
东西还是比较不错,可以满足常见需求了。还想了解可以看看这个 https://linux.cn/article-4126-1.html
,比较详细
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 【Flutter 专题】102 何为 Flutter RenderObjects ?
- 创建出来的maven项目没有iml文件
- SpringMVC传递参数乱码解决,web.xml中配置编码过滤器
- SpringMVC中传值有些值为null使用@RequestParam(“name“)解决
- 9.30面试:AOP+事务+JDK动态代理与cglib区别+Spring的aop如何切换底层创建代理对象的方式
- R语言实现基因组的可视化
- Linux实用命令大全(附思维导图)
- 二叉搜索树与python中self参数理解
- 需要了解的Python编码解码知识
- 程序员必备技能之markdown写作
- Python列表操作最全面总结
- Python 0基础开发游戏:打地鼠(详细教程)VS code版本
- Python经典编程题:字符串替换
- Python字典操作总结
- 纯代码系列:Python实现验证码图片(PIL库经典用法用法,爬虫12306思路)