logrotate日志不轮转呢?_新日志size0

摘要:
该计划应管理日志,以满足未来的功能处理、统计和领导需求。因为我懒得写,所以我直接使用syslog函数,并将日志交给rsyslog来写。然后使用logrotate每天旋转日志。这两个日志分别发送到local6.info和local6.notice#definelogInfo(…)pthread_ mutex _ lock;logLen=snprintf;系统日志;pthread_ mutex _ unlock#definelogUpload(…)pthread_mutex _ lock;logLen=snprintf;系统日志;pthread_ mutex _ unlock…openlog;。。。在/etc/rsyslog中添加了local6.info/var/log/zw。conf_info.loglocal6.notice/var/log/zw_通知。log在/etc/logrotate中创建一个新文件zw。d/_日志[root@localhostlogrotate.d]#catzw_log/var/log/zw_注意。log/var/log/zw信息。日志{no compress-day rotate 21}意味着他们不压缩,每天轮换,并保留21份副本。经过仔细研究,发现这个错误是真的。rsyslog和logrotate是两个软件包。尽管logrotate重命名了当前日志并删除了旧日志,但rsyslog并不知道哇。打开的文件仍然是旧文件。重新打开日志文件。
程序,要管理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两个日志共享这个脚本,就是说他俩轮转完成后只执行一次这个脚本,默认情况下是每个脚本轮转完成就执行一次

免责声明:文章转载自《logrotate日志不轮转呢?_新日志size0》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇sql promptTextBox禁止手动输入但是允许刷卡输入下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

爬虫(十五):scrapy中的settings详解

Scrapy设定(settings)提供了定制Scrapy组件的方法。你可以控制包括核心(core),插件(extension),pipeline及spider组件。设定为代码提供了提取以key-value映射的配置值的的全局命名空间(namespace)。 Scrapy内置设置 下面给出scrapy提供的常用内置设置列表,你可以在settings.py文...

Oracle获取alter.log的方法

10g下:可以在 admin{sid}pfile文件下的init.ora文件中找到以下内容:audit_file_dest = C:ORACLEPRODUCT10.2.0ADMINORCLADUMP background_dump_dest = C:ORACLEPRODUCT10.2.0ADMINORCLBDUMP user_dump_dest = C:O...

ADB 常用命令

查看连接设备   adb devices //显示设备列表   adb get-serialno //获取设备序列号 重启adb service   adb kill-server   adb start-server adb 获取root控制   adb root   adb remount //将system分区重新挂载为可读写分区 adb...

keepalived配置日志

1.编辑配置文件/etc/sysconfig/keepalived,将第14行的KEEPALIVED_OPTIONS="-D"修改为KEEPALIVED_OPTIONS="-D -d -S 0" sudo sed -i '14 s#KEEPALIVED_OPTIONS="-D"#KEEPALIVED_OPTIONS="-D -d -S 0"#g' /etc...

Mysql+Keepalived双主热备高可用操作记录

我们通常说的双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务。当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短。MySQL双主复制,即互为Master-Slave(只有一个Master提供写操作),可以实现数据库服务器的热备,但是一个Master宕机后不能实现动态切换。使用Keepalived,可以通过...

git日志的查看与修改

1.命令行中查看日志git log 默认是显示所有的日志信息,之前出来的界面显示的日志,很少。 最后发现,只需要使用键盘上向下键↓,就可以继续浏览更多的日志 空格键,可以翻页浏览日志。  向左←  向右 →  的箭头,可以水平移动查看日志 2.将日志按照格式导出到文件中git log --pretty=format:'%h was %an, %ar, me...