我试图让一个bash脚本在Centos 6.5版本上使用sysloglogin到一个自定义的日志文件,但是它总是只logging到/var/log/messages如下所示:
Jan 12 09:54:47 localhost nbsp: Test message blah!
我究竟做错了什么? 为什么不logging到/var/log/my_prog_test.log ? 这是我的configuration和文件。
/etc/rsyslog.conf (大部分文件被忽略):
if $programname == 'my_prog_test' then { action(type="omfile" file="/var/log/my_prog_test.log") }
在对rsyslog.conf进行更改后,我运行…
$ sudo /etc/rc.d/init.d/rsyslog restart Shutting down system logger: [ OK ] Starting system logger: [ OK ]
…所以rsyslog在configuration更改后重新启动。
bash脚本/home/nbsp/bin/my_prog_test看起来像这样:
#!/bin/bash logger 'Test message blah!'
日志文件列表:
$ ls -la /var/log/ | grep my_prog_test -rw-------. 1 root root 0 Jan 11 09:23 my_prog_test.log
符号链接…
$ ls -la /usr/bin/my_prog_test lrwxrwxrwx. 1 root root 29 Jan 12 08:54 /usr/bin/my_prog_test -> /home/nbsp/bin/my_prog_test
该程序的列表:
$ ls -la bin/my_prog_test -rwxrwxr-x. 1 nbsp nbsp 50 Jan 12 09:09 bin/my_prog_test
您的脚本正在调用logging器(1)将某些内容写入syslog。 因此rsyslog会看到程序名“logger”正在写,而不是“my_prog_test”。
对于你想用“-p local0.notice”实现呼叫logging器(1),在rsyslog.conffilter中使用设备“local0”而不是程序名“my_prog_test”。
根据我的系统上的rsyslog(Debian Wheezy和来自backports的rsyslog 7.4.4)的文档,后者将被表示为:
if $syslogfacility-text == 'local0' then { action(type="omfile" file="/var/log/my_prog_test.log") }
这也应该工作,对于这种情况会更简单:
local0.* /var/log/my_prog_test.log
如果在你的系统上,系统日志设备local0已经被用于这样的目的,你可以改为使用local1而不是local7。