Redhat
rsyslog 升級後日誌記錄不起作用
我在 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-12
到5.8.10-2
版本。經過一番調試,我發現這個條件在新版本
$syslogtag == 'dev:'
上不起作用。現在吃消息的一部分,直到第一個空格並包含而不是.rsyslog``$syslogtag``dev:Hello``dev:
您能否指出我該如何處理它以及如何使 rsyslog 正確解析標籤?(更改來自 django 應用程序的日誌消息格式不是一種選擇)
如果您需要任何其他資訊,請告訴我。謝謝你。
如果應用程序有不同的名稱,您可以使用 $programname 過濾器。
如果沒有,您可以使用
if $msg contains 'rel: ' then ....
我遷移了一段時間,但我相信你應該使用
$syslogtag startswith 'rel: '
而不是==