我正在将日志从 Heroku 应用程序发送到 rsyslog 服务器,但生成的日志文件似乎为空。用于接收远程消息的 rsyslog 配置如下:
$template RemoteDailyLog,"/var/log/remote/%hostname%/%$year%/%$month%/%$day%.log"
:fromhost-ip, !isequal, "127.0.0.1" -?RemoteDailyLog
& ~
我的完整 rsyslog 配置是可在此粘贴。
此配置似乎可以正确创建目录。我看到 Heroku 应用程序的日志记录主机名(格式为“d.xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”)出现在 rsyslog 主机上的 /var/log 中,这意味着日志消息已成功发送到日志记录守护程序,但生成的日志文件大小为零。
我猜测问题出在 rsyslog 而不是 Heroku,但我不确定下一步该查找哪里。
答案1
检查服务器的 /var/log/syslog 后,我发现 rsyslog 在打开动态文件时遇到了问题。事实证明,Ubuntu 10.04 LTS 中 rsyslog 的默认配置不适合动态(基于模板)日志文件。Richard Fleming 建议的补丁如下:
--- /etc/rsyslog.conf.orig 2009-11-17 11:21:10.874573462 -0500
+++ /etc/rsyslog.conf 2009-11-17 12:45:15.604573200 -0500
@@ -42,9 +42,11 @@
$FileGroup adm
$FileCreateMode 0640
$DirCreateMode 0755
+$DirOwner syslog
+$DirGroup adm
$Umask 0022
$PrivDropToUser syslog
-$PrivDropToGroup syslog
+$PrivDropToGroup adm
#
# Include all config files in /etc/rsyslog.d/
有关详细信息,请参阅:For more information, see:https://bugs.launchpad.net/ubuntu/+source/rsyslog/+bug/484336