博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
为啥么logrotate日志不轮转呢?_新日志size0
阅读量:6695 次
发布时间:2019-06-25

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

某懒人写个程序,要管理log,留作日后的后续功能处理和统计和领导需要。因为懒得写,所以直接用了syslog函数,把log交给rsyslog去写了。然后用logrotate每天做日志轮转。 
两种log分别发送到了local6.info和local6.notice。

#define logInfo(...) pthread_mutex_lock(&logLock);\logLen=snprintf(logBuf,sizeof(logBuf),__VA_ARGS__);\syslog(LOG_INFO,logBuf,logLen);\pthread_mutex_unlock(&logLock)#define logUpload(...) pthread_mutex_lock(&logLock);\logLen=snprintf(logBuf,sizeof(logBuf),__VA_ARGS__);\syslog(LOG_NOTICE,logBuf,logLen);\pthread_mutex_unlock(&logLock)...openlog("zhuowang_SS",LOG_PID|LOG_CONS,LOG_LOCAL6);...

在/etc/rsyslog.conf里添加了 
local6.info /var/log/zw_info.log 
local6.notice /var/log/zw_notice.log 
在/etc/logrotate.d/建新文件zw_log 


[root@localhost logrotate.d]# cat zw_log
/var/log/zw_notice.log
/var/log/zw_info.log
{


nocompress
daily
rotate 21
}

意为他俩不压缩、每天轮转、保留21份。 
但是运行却发现每天虽然在生成新日志文件,但是日志还是被写到旧文件里去。好好研究了一下发现这错误犯的真2,rsyslog和logrotate根本就是两个软件包两回事嘛。虽然logrotate重命名了当前log,删了旧log,但是rsyslog不知道哇,打开的文件还是旧文件嘛。当然写的就是旧文件了嘛。

经探索后发现这个问题有两种解决办法。 
1.copytruncate,拷贝后截断。 
把当前log拷贝后截断。可以理解为把内容拷贝走作为备份,然后清空当前文件。但是这有一个问题就是拷贝和截断之间会有时间差,存在丢数据的可能。 
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两个日志共享这个脚本,就是说他俩轮转完成后只执行一次这个脚本,默认情况下是每个脚本轮转完成就执行一次。

然后问题就解决啦,程序改动出奇的小,每天有新文件生成,定期处理下超14天的内容。超21天的log会被自动删除。^o^ 成功向四个现代化迈近一小步。

本文转自 Tenderrain 51CTO博客,原文链接:http://blog.51cto.com/tenderrain/1704463

转载地址:http://ccjoo.baihongyu.com/

你可能感兴趣的文章
CentOS进入图形界面
查看>>
C#--web services之wsdl文件生成cs
查看>>
配置Apache+Tomcat实现SSO(单点登录)
查看>>
《Pro ASP.NET MVC 3 Framework》学习笔记之十五【示例项目SportsStore】
查看>>
Ext右键菜单完整版
查看>>
2012年1月凯立德地图普高清全分辨率懒人包P1750-D5616-2721J09(完美破解,已上路实测,永久下载地址)...
查看>>
SwipeBackActivity 的使用
查看>>
不停止MySQL服务增加从库的两种方式
查看>>
点击div折叠
查看>>
Sqli-LABS通关笔录-2
查看>>
hessian 在spring中的使用 (bean 如 Dao无法注入的问题)
查看>>
ccbpm工作流引擎是怎样支持多种流程模式的
查看>>
Unity打包android的apk与数据包.obb分离和apk签名
查看>>
hive 运行sqlclient异常
查看>>
Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile 解决办法
查看>>
maven中pom文件配置解决资源文件的编码问题
查看>>
Generative Adversarial Nets[LSGAN]
查看>>
Apache Nifi在Windows环境下搭建伪群集及证书登录
查看>>
socket的bind函数是不是只能绑定本地IP,不能绑定外网IP么?
查看>>
MySql 常用命令总结
查看>>