Centos syslog 沒有從 bash 腳本記錄到自訂文件

Centos syslog 沒有從 bash 腳本記錄到自訂文件

我試圖讓 bash 腳本在 Centos 版本 6.5 上使用 syslog 記錄到自訂日誌文件,但它總是只是記錄如下/var/log/messages

Jan 12 09:54:47 localhost nbsp: Test message blah!

我究竟做錯了什麼?為什麼它沒有登入/var/log/my_prog_test.log?這是我的配置和文件。

/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 在設定變更後重新啟動。

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

答案1

您的腳本正在呼叫 logger(1) 向系統日誌寫入內容。因此,rsyslog 將看到程式名稱「logger」進行寫入,而不是「my_prog_test」。

對於您想要實現的目標,請使用“-p local0.notice”呼叫 logger(1) 並在 rsyslog.conf 中按設施“local0”而不是程式名稱“my_prog_test”進行過濾。

根據我的系統上的 rsyslog 文件(Debian Wheezy with rsyslog 7.4.4 from backports),後者將表示為:

  if $syslogfacility-text == 'local0' then {
     action(type="omfile" file="/var/log/my_prog_test.log")
  }

這也應該有效,並且對於這種情況會更簡單:

  local0.* /var/log/my_prog_test.log

如果您的系統上的 syslog 工具 local0 已用於此類目的,則您可以使用 local1 到 local7。

相關內容