我试图通过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();
我运行应用程序,然后检查系统日志。
tail system.log
...
Apr 12 16:33:00 HOSTNAME TestApp[3024]: TEST MESSAGE1
....
我在那里找不到“测试消息2”。我还尝试通过“系统日志”进行检查。
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
所以,“logger”再次起作用。我试图通过编译的应用程序做同样的事情,但我看不到“TEST MESSAGE2”。然后我通过“syslog -s -l er TEST MESSAGE3”做同样的事情。同样,我无法在TestApp.log和system.log中看到消息。
我阅读了关于macOS日志记录的信息,它描述了一些更改,但没有说旧的syslog方法将不起作用。
我做错了什么?为什么“logger”有效,但“syslog”和我的编译(Hello World)应用程序不起作用?
谢谢