Logs

如何將具有唯一 id 子字元串的核心消息重定向到單獨的日誌文件中(使用 rsyslog)?

  • December 15, 2011

我正在使用iptables的日誌記錄功能來調試我的網路活動。我使用帶有--log-prefix參數的某些前綴來唯一標識核心日誌中屬於iptables輸出的消息,例如::IPT::LOG::.

如何配置rsyslog以將這種方式標記的消息重定向到單獨的日誌文件中?手冊頁對rsyslog我來說看起來太神秘了。

除了基於選擇器的過濾之外,rsyslogd 還可以過濾在日誌消息屬性中找到的模式。要完成您想要做的事情,您可以創建一個基於屬性的過濾器來匹配您在 iptables 規則中使用的字元串。如果要--log-prefix "unique_prefix: "在 iptables 規則中使用,則需要將其添加到 rsyslog.conf:

:msg,startswith,"unique_prefix" /var/log/iptables

此規則將為您的前綴測試日誌消息並將它們發送到 /var/log/iptables(除了 rsyslog 配置為發送它們的任何其他位置)。如果您需要讓消息出現在 /var/log/iptables 而不是其他地方,請將新規則放在其他規則之上,並在其後面加上一行包含& ~. 完整範例:

:msg,startswith,"unique_prefix" /var/log/iptables
& ~
#
# The rest of my rules appear below
# ...
*.info;mail.none;authpriv.none;cron.none                /var/log/messages

Rsyslog 規則可以有多個操作。&後續操作在以 & 符號 ( )開頭的新行上定義。在上面的範例中,第一條規則有兩個操作:將輸出發送到 /var/log/iptables,然後丟棄消息 ( ~)。有關此答案中規則的更多資訊,請參閱有關操作和過濾器的rsyslog 文件

編輯使用startswith而不是contains出於性能考慮。由於 iptables--log-prefix確實是一個前綴,因此將在消息的開頭。

引用自:https://unix.stackexchange.com/questions/16053