Systemd

在 systemd 日誌中提取特定日誌的日誌消息?

  • February 8, 2018

我想知道是否可以使用 systemd 的日誌記錄來提取特定日誌的日誌消息。例如,當我在 C 中打開一個日誌時openlog('slog', LOG_CONS | LOG_PID, LOG_LOCAL1),只提取記錄在 ’ slog’ 或LOCAL1?下的消息

當我執行journalctl -u slogor之類的操作journalctl -u LOG_LOCAL1時,它只會告訴我日誌何時開始和結束,而不是實際的日誌消息。

是的,這是可能的,但是您將錯誤的開關傳遞給journalctl.

根據journalctl(1)手冊頁:

  • 要讀取具有給定係統日誌標識符(例如“foo”)的消息,請發出journalctl -t foojournalctl SYSLOG_IDENTIFIER=foo
  • 要使用給定的 syslog 設施讀取消息,請發出journalctl SYSLOG_FACILITY=1(請注意,設施是使用它們的數值儲存和匹配的)。

更一般地,系統日誌標識符和設施作為單獨的欄位(SYSLOG_IDENTIFIERSYSLOG_FACILITY)儲存在日誌中。如果您需要從 C API 訪問日誌,則必須直接在這些欄位上添加匹配項。

journalctl -u開關用於在擁有生成消息的程序的 systemd 單元的名稱上添加匹配項。所以這是錯誤的開關。

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