簡體   English   中英

macOS High Sierra syslog不起作用

[英]macOS High Sierra syslog does not work

我嘗試通過發送日志消息到syslog

logger -is -t TestApp -p user.error TEST MESSAGE1

然后我檢查它是否在那里

tail system.log
...
Apr 12 16:33:00 HOSTNAME TestApp[3024]: TEST MESSAGE1

所以它有效。 然后我嘗試通過編譯的應用程序執行相同的操作。

openlog("TestApp", LOG_PID, LOG_USER);
setlogmask(LOG_UPTO(LOG_DEBUG));
syslog(LOG_ERR, "TEST MESSAGE2");
closelog();

我運行應用程序然后檢查system.log

tail system.log
...
Apr 12 16:33:00 HOSTNAME TestApp[3024]: TEST MESSAGE1
....

我在那里找不到“TEST MESSAGE 2”。 我也嘗試通過“syslog”檢查它

syslog -s -l er TEST MESSAGE3

結果相同。 我無法在日志文件中看到該消息。 好。 日志設置可能存在一些問題。 所以我嘗試配置記錄到特定文件。 我創建/ etc / asl / TestApp

# ASL configuration for TestApp
#
> /var/log/TestApp.log mode=0640 format=bsd rotate=seq compress file_max=1M all_max=5M
#
? [= Sender TestApp] file /var/log/TestApp.log
? [= Sender TestApp] [<= Level debug] claim

我重啟了syslogd和ASL。

launchctl stop com.apple.syslogd
launchctl stop com.apple.aslmanager
launchctl start com.apple.aslmanager
launchctl start com.apple.syslogd

然后我嘗試再次通過“logger”發送消息並檢查日志

tail TestApp.log
Apr 12 16:47:49 HOSTNAME TestApp[3062]: TEST MESSAGE1

所以“記錄器”再次起作用。 我嘗試通過編譯的應用程序執行相同的操作,但我看不到“TEST MESSAGE2”。 然后我通過“syslog -s -l er TEST MESSAGE3”做同樣的事情。 我再次看不到TestApp.log和system.log中的消息。

我閱讀了有關登錄macOS的信息,它描述了一些更改,但它沒有說舊的syslog方法不起作用。

我究竟做錯了什么? 為什么“logger”工作但是“syslog”和我編譯的(Hello World)應用程序不起作用?

謝謝

Apple打破了macOS Sierra中的syslog(3)功能,並且它繼續在High Sierra中被打破。 沒有足夠的詞語來描述蘋果公司的變化是多么愚蠢。

最接近的人可能會看到編譯程序(包括PHP解釋器)發送的日志消息是使用這樣的命令將它們從Apple的鈍存儲中拉出來:

log stream --info --debug --predicate 'sender == "<your-app-name>"' --style syslog

但這只會導致部分syslog功能。 不支持通過UDP將日志發送到中央收集點,現在大多數8個緊急級別都丟失了。 設施編碼同樣步履蹣跚。

暫無
暫無

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

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