rsyslog文本文件input模块错误

我在用着:

root@u1210: /etc () # lsb_release -d Description: Ubuntu 12.10 root@u1210: /etc () # dpkg -l | grep rsyslog ii rsyslog 5.8.6-1ubuntu9 amd64 reliable system and kernel logging daemon 

今天,我试图从nginx日志文件中读取日志,但得到这个错误:

 Mar 11 17:34:18 u1210 kernel: imklog 5.8.6, log source = /proc/kmsg started. Mar 11 17:34:18 u1210 rsyslogd: [origin software="rsyslogd" swVersion="5.8.6" x-pid="9742" x-info="http://www.rsyslog.com"] start Mar 11 17:34:18 u1210 rsyslogd: rsyslogd's groupid changed to 103 Mar 11 17:34:18 u1210 rsyslogd: rsyslogd's userid changed to 101 Mar 11 17:34:18 u1210 rsyslogd-3003: invalid or yet-unknown config file command - have you forgotten to load a module? [try http://www.rsyslog.com/e/3003 ] Mar 11 17:34:18 u1210 rsyslogd: the last error occured in /etc/rsyslog.conf, line 68:"$InputFilePollingInterval 10" Mar 11 17:34:18 u1210 rsyslogd-2124: CONFIG ERROR: could not interpret master config file '/etc/rsyslog.conf'. [try http://www.rsyslog.com/e/2124 ] 

检查rsyslog使用的configuration版本:

 root@u1210: /etc () # ps -ef | grep rsyslog syslog 18934 1 0 17:42 ? 00:00:00 rsyslogd -c5 

我刚刚使用了默认configuration,下面加了一行:

 $ModLoad imfile $InputFileName /var/log/nginx/access.log $InputFileTag nginx: $InputFileStateFile nginxxxx $InputFileSeverity error $InputFileFacility local7 $InputRunFileMonitor $InputFilePollingInterval 10 

这里是configuration文件: http : //pastebin.com/8RnHXaDd

nginx日志文件存在:

 root@u1210: ~ () # ls -l /var/log/nginx/access.log -rw-r----- 1 www-data adm 730040 Mar 11 17:49 /var/log/nginx/access.log 

我发现rsyslog是Ubuntu,Debian,Fedora和其他许多发行版的默认版本。 首先,我认为这个5.8.6太旧了,所以它没有提供文本文件的inputfunction,但是在谷歌周围之后,同样的事情可以从3.X完成。

我在这里做错了什么?

另外问题:我试过syslog-ng,configuration文件非常好,它在这个函数上工作得很好。 但谷歌周围,似乎并没有广泛使用rsyslog。 没有比较好的比较(几乎已经过时了)。 你build议哪个,syslog-ng或者rsyslog? (我使用Ubuntu / Debian)

谢谢!

rsyslogd-3003: invalid or yet-unknown config file command - have you forgotten to load a module? [try http://www.rsyslog.com/e/3003 ]

rsyslogd: the last error occured in /etc/rsyslog.conf, line 68:"$InputFilePollingInterval 10"

根据这个文件,应该是

 $InputFilePollInterval 10 

代替:

 $InputFilePollingInterval 10 

解决了问题。

这是关于许可。 /etc/rsyslog.conf有这些行:

 $PrivDropToUser syslog $PrivDropToGroup syslog 

它在初始化之后将权限下放到syslog用户和组。

/var/log/nginx/access.log只能由www-dataadm组中的用户访问。

$PrivDropToGroup syslog更改$PrivDropToGroup syslog $PrivDropToGroup adm让它起作用。

感谢@quanta指出$InputFilePollInterval指令中的错误。