Linux
rsyslogd:有什麼辦法可以繞過本地設施的數量?
我們有大約 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
如果您有更複雜的需求,或者想了解上述內容,請閱讀手冊頁和文件。