Linux

rsyslogd:有什麼辦法可以繞過本地設施的數量?

  • April 23, 2012

我們有大約 9-10 台設備,我們希望將日誌記錄定向到我們的 rsyslog 伺服器。但是,只有 8 個本地設施 (0-7)。我們如何才能繞過這個限制?

在您的消息中記錄應用程序名稱。過濾應用程序名稱而不是設施。如果您的應用程序不直接生成 syslog 消息,您可以應用輸出過濾器(例如sed)來處理事情以使其看起來像您想要的那樣。

查看有關過濾條件的 Rsyslog 文件,了解如何配置此行為。根據該頁面中的資訊,這裡有一個範例,說明如何將以字元串“application1”開頭的消息放入/var/log/application1

if $msg startswith 'application1' then /var/log/application1

如果您的應用程序正確設置,您還可以在程序名稱上顯式過濾:

if $programname == 'application1' then /var/log/application1

rsyslog.conf您可以在您的;中執行各種複雜的過濾。閱讀文件以獲取更多資訊和範例。

編輯:rsyslog可以使用模板為每個伺服器創建單獨的文件。類似以下內容應將所有日誌消息放入每個主機名的單獨文件中。(這是從聯機幫助頁中提取的。)

$template DynFile,"/var/log/system-%HOSTNAME%.log
*.*                             ?DynFile

以下類似,但不記錄調試消息。它還使用連接主機名而不是消息主機名。(這是基於我為記錄 Obi100 的輸出而開發的。)

$template HostFormat,"%timegenerated% %fromhost% %syslogtag%%msg:::sp-if-no-1st-sp%%msg:::drop-last-lf%\n"
$template HostFile,"/var/log/system-%fromhost%.log
if $syslogseverity < 7 then -HostFile;HostFormat

如果您有更複雜的需求,或者想了解上述內容,請閱讀手冊頁和文件。

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