防止在 journalctl 下記錄系統日誌
我有一個簡單的 Python 片段,由一個
systemd
服務管理,它記錄到rsysogd
我定義了一個配置文件的守護程序,以我定義的格式將其放入系統日誌伺服器。到目前為止,這工作正常。在下面的程式碼中,我將參數作為要登錄伺服器的字元串傳遞。我將下面的程式碼用作模組並單獨使用它來記錄,實際的腳本將其用於記錄目的。
#!/usr/bin/env python import syslog import sys syslog.openlog(facility=syslog.LOG_LOCAL0) syslog.syslog(syslog.LOG_INFO, sys.argv[1])
由於應用程序是由
systemd
它管理的,因此當從journalctl -xe
和journalctl -u <my-service>
我不希望發生這種情況時,它會提供 syslog 的副本,因為我有其他關鍵資訊,我正在日誌日誌中記錄。服務定義是
[Unit] Description=Computes device foobar availability status [Service] Type=simple EnvironmentFile=/etc/sysconfig/db_EndPoint ExecStart=/usr/bin/python /opt/foobar/foobar.py WatchdogSec=60 RestartSec=10 Restart=always LimitNOFILE=4096 [Install] WantedBy=default.target
在
/etc/systemd/journald.conf
文件中,我沒有啟用任何可用的選項。我查看了這個journald.conf文件以使用ForwardToSyslog=no
並重新啟動journald
服務systemctl restart systemd-journald
並且還重新啟動了我的服務單元,但我看到日誌輸出到系統日誌伺服器以及日誌日誌。我在這裡缺少什麼選項?
我有一個由 systemd 服務管理的簡單 Python 片段,該服務記錄到 rsys
$$ l $$ogd 守護程序$$ … $$
不,你沒有。
您擁有的是一個記錄到 systemd 日誌的服務。
/dev/log
偵聽Python 程序正在與之通信的知名套接字的伺服器不是rsyslogd
. 它是systemd-journald
。 附加到 的另一側rsyslogd
,並且您的 Python 程序沒有與它交談。systemd-journald
由此可見,不發送內容的唯一方法
systemd-journald
是使用其他路由到rsyslogd
,而不是Python 庫預設使用的眾所周知的套接字。這一切都取決於您的配置方式rsyslogd
。
- 您可能已經使用該模組打開了 UDP 伺服器
imudp
,在這種情況下,您可以通過使用與此類 UDP 伺服器通信的不同 Python 庫來告訴您的 Python 程序使用它。(Python syslog 庫硬連線以使用眾所周知的本地套接字。)- 或者(更好的是,考慮到您必須小心不要在您的機器之外向世界開放 UDP 服務)您可以通過在模組配置中配置它來提供
rsyslogd
第二個不為人知的AF_LOCAL
套接字來監聽。imuxsock
同樣,您必須告訴您的 Python 程序使用它並使用不同的 Python 庫。您在 Python 程序中所做的具體操作超出了此答案的範圍。
進一步閱讀