簡體   English   中英

我如何找到我的程序名稱?

[英]How do I find my program name?

問題

我無法使用 syslog 寫入與默認日志不同的日志。 我不確定我的應用程序名稱在我的配置中是否有誤。 “程序名”和“進程名”不是一個意思嗎? 如果沒有,如何在Python 3.6中找到我的程序名?

嘗試過

我在Python 3.6寫了一個小應用。 我已經成功地使用它寫入 CentOS 7 中/var/log/messages中的一個通用系統日志文件。 如果我打開那個文件,我可以看到我的條目。

如果我運行ps aux | grep myappname ps aux | grep myappname ,進程名稱列為python myappname.py

我在/etc/rsyslog.d/00-myconfig.conf創建了一個文件,內容是:

if $programname contains 'myappname' then /home/user/test_log.log
& ~

我已經使用sudo systemctl restart rsyslog重新啟動了進程。

我運行rsyslogd -N1 ,這給了我一個關於我在我的配置中使用~的棄用警告,證明配置正在被識別。 我已經嘗試刪除該行,因為我不確定它的作用,但這也無濟於事。

我可以確認條目仍在寫入/var/log/messages 這些條目並沒有化為烏有。

由於 syslog 自然不會在日志中包含appname ,因此您需要在創建日志消息時自行添加。 這里有一個使用帶有--tag的 Linux記錄器命令的示例。

logger --tag="myappname" "Some message"

因此,在調整任何內容之前,請檢查您的rsyslog.conf包含來自/etc/rsyslog.d/的文件(因為即使您不將它們包含在rsyslog.conf中,它們也會被檢查。

# Include all config files in /etc/rsyslog.d/
include(file="/etc/rsyslog.d/*.conf")

如果錯誤仍然存在,則必須調整您的查詢。 最簡單的方法是使用基於屬性的過濾器。

:syslogtag, isequal, "myappname" /var/log/test_log.log

&~

*.* /var/log/messages

配置檢查myappname是否等於日志中的hostname 如果是這樣,它被寫入test_log.log 下一行 ( &~ ) 然后丟棄所有已寫入的消息。 因此,不會對這些消息應用任何附加規則。 因此,它們不會寫入/var/log/messages

重要說明:使用比較操作isequal時,比較的兩個值必須完全相等(區分大小寫)才能匹配。 有關基於屬性的過濾器的更多信息,請參閱rsyslog 文檔


PS查看這篇文章,進一步了解&~在 rsyslog 中的含義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM