Osx

如何在 Mac 上寫入 /var/log/system.log

  • February 12, 2021

我在 Mac 上跟踪 system.log:

tail -f -n 0 /var/log/system.log

但我不知道如何寫入此日誌。它似乎確實是機器上的主要日誌。我試過:

logger foobar  # didn't work
syslog -s -l error "message to send"  # didn't work

有人知道如何在 Mac 上寫入 system.log 嗎?

更新

如果我執行:log stream

然後使用:

logger -is -t krypted "Hello L"

它會出現在流中,但不會出現在/var/log/system.log. 奇怪的。

流式消息是二進制日誌文件的一部分。Apple 正在轉向統一的日誌系統,因此日誌不再以相同的方式工作,至少在預設情況下是這樣。人們可能會嘗試syslogd通過一個或兩個配置文件來配置和/或 ASL(Apple System Logger),/etc/syslog.conf並且/etc/asl.conf. (還有更多的 ASL 配置文件儲存在 中/etc/asl。)這可能涉及閱讀手冊頁以了解如何為某些消息生成純文字日誌文件。其中一些手冊可能是man 1 logman 1 syslogman 5 syslog.confman 8 syslog. 我還沒有確切地確定如何執行此操作,但我想為您提供某種方法來生成、查看和“跟踪”自定義消息。(如果我確實通過配置他們的新日誌系統來學習如何將某些消息發送到純文字文件,我會回來更新這個答案。似乎至少可以做到,因為確實存在純文字中的文件/var/log。)


syslog -s可以使用和發送消息logger。(該-s選項將日誌消息發送到syslogd,並且syslog可以做更多的事情logger。)以類似的方式跟踪日誌的一種簡單方法tail是使用Console.app。打開程序並將游標放在Devices下列出的本地電腦上。在搜尋欄位中,提供用於發送消息的程序的名稱:syslog或之一logger。接下來,打開終端並發送消息。

syslog -s "test message"

然後可以在控制台中看到該消息,如下圖所示。

蘋果控制台的片段

可以從日誌中獲取消息。使用--infoand/or--debug選項指定log預設忽略的行。在選項中指定哪個程序發送了系統日誌消息--predicate

log show --info --debug --predicate "process == 'logger'"

或者

log show --info --debug --predicate "process == 'syslog'"

要獲得類似於 的效果tail,請使用stream命令。

log stream --info --debug --predicate "process == 'logger'"

或者

log stream --info --debug --predicate "process == 'syslog'"

啟動流後,向見證人發送一條消息,表明它的行為方式與 類似tail,如圖所示。

Apple 日誌命令流式傳輸

該命令syslog -s "test message"用於發送消息。

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