如何在 Mac 上寫入 /var/log/system.log
我在 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 log
、man 1 syslog
、man 5 syslog.conf
和man 8 syslog
. 我還沒有確切地確定如何執行此操作,但我想為您提供某種方法來生成、查看和“跟踪”自定義消息。(如果我確實通過配置他們的新日誌系統來學習如何將某些消息發送到純文字文件,我會回來更新這個答案。似乎至少可以做到,因為確實存在純文字中的文件/var/log
。)
syslog -s
可以使用和發送消息logger
。(該-s
選項將日誌消息發送到syslogd
,並且syslog
可以做更多的事情logger
。)以類似的方式跟踪日誌的一種簡單方法tail
是使用Console.app
。打開程序並將游標放在Devices下列出的本地電腦上。在搜尋欄位中,提供用於發送消息的程序的名稱:syslog
或之一logger
。接下來,打開終端並發送消息。syslog -s "test message"
然後可以在控制台中看到該消息,如下圖所示。
可以從日誌中獲取消息。使用
--info
and/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
,如圖所示。該命令
syslog -s "test message"
用於發送消息。