在我的配置中,我有rsyslog负责以下对/home/user/my_app/shared/log/unicorn.stderr.logusing的更改imfile。使用TCP将内容发送到另一个远程日志记录服务器。
当日志文件旋转时,rsyslog停止将数据发送到远程服务器。
我尝试重新加载rsyslog,发送HUP信号并完全重新启动它,但是没有任何效果。
我发现真正可行的唯一方法是肮脏的:
- 停止服务,删除rsyslog统计文件,然后再次启动rsyslog。我的logrotate文件中的postrotate挂钩中的所有内容。
 kill -9rsyslog并重新开始。
有没有一种不接触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脚本正在运行) )...?