博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
logrotate切割日志后,新的日志还是写入到老的日志文件中
阅读量:7040 次
发布时间:2019-06-28

本文共 1335 字,大约阅读时间需要 4 分钟。

线上生产环境中,安装了dnsmasq,并记录日志。由于每一次dns查询都会生产日志,考虑到日志量越来越大,就用logrotate做日志轮转。配置如下:

1
2
3
4
5
6
7
8
9
10
/var/log/dnsmasq/dnsmasq
.log {
        
daily     
//
按天轮转日志
        
rotate 15 
//
保留15个log文件
        
compress  
//
压缩轮转后的文件
        
delaycompress 
        
dateext
        
missingok
        
notifempty
        
create 0664 root root
}

配置后,用logrotate -f /etc/logrotate.d/dnsmasq 测试成功

1
2
3
4
[root@SRV-OPS10-DNS01 logrotate.d]
# ls -l /var/log/dnsmasq/            
total 8
-rw-r----- 1 root root    1 May  9 17:55 dnsmasq.log
-rw-r----- 1 root root 1092 May  9 17:45 dnsmasq.log-20170509

但是新问题是,虽然日志被切断了,但是新的log不会写入到新的dnsmasq.log中,而是继续写入到dnsmasq.log-20170509中。

进过上网查资料发现,原因是:

虽然logrotate只是重命名了当前log,删了旧log,但是rsyslog不知道,打开的文件还是旧文件嘛。当然写的就是旧文件了。

解决办法:

网上查下来有以下两种解决办法:我只尝试了第一种,成功了。

1.加入copytruncate参数,拷贝后截断。

原理:可以理解为把内容拷贝走作为备份,然后清空当前文件。但是这有一个问题就是拷贝和截断之间会有时间差,存在丢数据的可能。

2.给rsyslog发信号。重新打开log文件。

在/etc/logrotate.d/zw_log里添加

sharedscripts

postrotate

/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true

endscript

postrotate表示在日志轮转后执行

sharedscripts表示zw_notice.log、zw_info.log两个日志共享这个脚本,就是说他俩轮转完成后只执行一次这个脚本,默认情况下是每个脚本轮转完成就执行一次

新的logrotate配置文件:

1
2
3
4
5
6
7
8
9
10
11
/var/log/dnsmasq/dnsmasq
.log {
        
daily     
//
按天轮转日志
        
rotate 15 
//
保留15个log文件
        
compress  
//
压缩轮转后的文件
        
copytruncate
        
delaycompress 
        
dateext
        
missingok
        
notifempty
        
create 0664 root root
}
本文转自 曾哥最爱 51CTO博客,原文链接:http://blog.51cto.com/zengestudy/1923824,如需转载请自行联系原作者
你可能感兴趣的文章
事故现场:MySQL 中一个双引号的错位引发的血案 ...
查看>>
MaxCompute_UDF_开发指南
查看>>
云MSP服务案例丨某知名制造集团的Oracle RAC部署实践 ...
查看>>
如何基于ReplayKit实现低延迟rtmp推屏
查看>>
说说JSON和JSONP,也许你会豁然开朗
查看>>
没有所谓好与不好,只是能否适用和用的好
查看>>
程序员写简历时必须注意的技术词汇拼写(持续更新...)
查看>>
ams光学传感器助力小米手机创新发展
查看>>
Python 特色介绍
查看>>
JavaScript_知识点梳理note1
查看>>
PostgreSQL 开启with-llvm(JIT)后,新增插件异常(clang: Command not found)处理
查看>>
思考设计SQL优化方案
查看>>
tomcat 调优-生产环境必备
查看>>
浅析C++的引用与const指针与各种传递方式
查看>>
Java并发编程75道面试题及答案
查看>>
仓储+调度,YOGO智能配送站能否改变外卖配送格局?
查看>>
jQuery-easyui和validate表单验证实例
查看>>
【对讲机的那点事】5G时代的到来,2G和3G将会被关停?
查看>>
DeepLearning.ai学习笔记(二)改善深层神经网络:超参数调试、正则化以及优化--week3 超参数调试、Batch正则化和程序框架...
查看>>
NSMutableArray 简单细说
查看>>