在我的配置中,我有rsyslog负责以下对/home/user/my_app/shared/log/unicorn.stderr.log
using的更改imfile
。使用TCP将内容发送到另一个远程日志记录服务器。
当日志文件旋转时,rsyslog停止将数据发送到远程服务器。
我尝试重新加载rsyslog,发送HUP信号并完全重新启动它,但是没有任何效果。
我发现真正可行的唯一方法是肮脏的:
- 停止服务,删除rsyslog统计文件,然后再次启动rsyslog。我的logrotate文件中的postrotate挂钩中的所有内容。
kill -9
rsyslog并重新开始。
有没有一种不接触rsyslog内部的正确方法?
Rsyslog文件
$ ModLoad标记 $ ModLoad imudp $ ModLoad imtcp $ ModLoad imuxsock $ ModLoad imklog $ ModLoad档案 $ template WithoutTimeFormat,“ [环境] [%syslogtag%]-%msg%” $ WorkDirectory / var / spool / rsyslog $ InputFileName /home/user/my_app/shared/log/unicorn.stderr.log $ InputFileTag unicorn-stderr $ InputFileStateFile stat-unicorn-stderr $ InputFileSeverity信息 $ InputFileFacility local8 $ InputFilePollInterval 1 $ InputFilePersistStateInterval 1 $ InputRunFileMonitor #转发到远程服务器 如果$ syslogtag包含'apache-',则@@ my_server:5000; WithoutTimeFormat :syslogtag,包含“ apache-”〜 *。* @@ my_server:5000; SyslFormat
Logrotate文件
/home/user/my_app/shared/log/*.log { 日常 Missingok dateext 旋转30 压缩 无可辩驳的 扩展名gz 复制截断 创建640位用户 共享脚本 旋转后 (停止rsyslog && rm / var / spool / rsyslog / stat- * &&启动rsyslog 2>&1)|| 真正 尾标 }
仅供参考,rsyslog用户可以读取该文件,我的服务器可以访问,并且不会继续跟踪在同一周期内不循环的其他日志文件。
我正在运行Ubuntu 12.04。
post-rotate
(不是问题)而不是postrotate
,因为您使用的原始logrotate脚本应该可以与rsyslog一起正常工作(如果postrotate脚本正在运行) )...?