Redhat

rsyslog 升級後日誌記錄不起作用

  • October 14, 2013

我在 Red Hat 伺服器上的 apache 下有幾個不同的 django 應用程序。這些應用程序使用SysLogHandler將日誌消息發送到本地rsyslog服務。為了將來自不同 django 應用程序的日誌消息通過管道傳輸到不同的文件,我們使用rsyslog tagging(基於syslogtag)。以下是我們所擁有的/etc/rsyslog.conf

...
$template myFormat,"%msg%\n"
if $syslogfacility-text == 'local2' and $syslogtag == 'dev:'  then /var/log/ap/dev/ws.log;myFormat
if $syslogfacility-text == 'local2' and $syslogtag == 'rel:'  then /var/log/ap/rel/ws.log;myFormat
...

以這種方式工作:如果日誌消息是dev:Hello World!Hello World!則寫入/var/log/ap/dev/ws.log.

直到昨天一切都很好。我們的系統從 6.2 升級到 6.3。據yum history,rsyslog已從 更新4.6.2-125.8.10-2版本。

經過一番調試,我發現這個條件在新版本$syslogtag == 'dev:'上不起作用。現在吃消息的一部分,直到第一個空格並包含而不是.rsyslog``$syslogtag``dev:Hello``dev:

您能否指出我該如何處理它以及如何使 rsyslog 正確解析標籤?(更改來自 django 應用程序的日誌消息格式不是一種選擇)

如果您需要任何其他資訊,請告訴我。謝謝你。

如果應用程序有不同的名稱,您可以使用 $programname 過濾器。

如果沒有,您可以使用if $msg contains 'rel: ' then ....

我建議查看http://www.rsyslog.com/doc/rsyslog_conf_filter.html

我遷移了一段時間,但我相信你應該使用

$syslogtag startswith 'rel: '

而不是==

引用自:https://serverfault.com/questions/543424