我刚刚为我的应用程序(已编译的二进制文件)添加了 ASL 日志记录支持,但使用 Console.app 时看不到任何日志条目。我使用设施“com.mydomain.myapp”(这不是实际值)进行日志记录,并添加了一个条目以/private/etc/asl.conf
告诉 syslogd 在此设施中“存储”条目(任何级别):
? [= Facility com.mydomain.myapp] store
我对 syslogd 执行了 HUP 操作但没有成功,因此我重新启动了 MacBook Pro,但这也没有什么效果。
我知道我的应用程序日志记录正常,因为我ASL_OPT_STDERR
在调用时添加了选项asl_open()
,并且可以在 stderr 上看到条目。我还使用 设置了过滤器,asl_set_filter()
以允许将适当的级别发送到服务器。
编辑:我见过这个文章,它提供了设置 syslogd 使用的“截止”值的另一种方法,但是也不起作用(尝试了临时和永久修复):
... 您看不到信息或调试消息的原因是 syslogd 守护程序过滤了它们。如果您想更改 syslogd 中的过滤,您可以更改 /System/Library/LaunchDaemons/com.apple.syslogd.plist 中的启动选项(
在 ProgramArguments 数组中添加 -c 和 -7)。这会使更改“永久”生效(直到您再次更改 plist)。请参阅 syslogd (8) 手册页。或者,您可以使用“syslog”命令行实用程序临时更改 syslogd 数据库过滤器值。sudo syslog -c syslogd -d
答案1
您没有说明此应用程序是 shell 脚本还是已编译的二进制文件。如果是 shell 脚本,我一直使用 logger 命令来更新 syslog 中的日志。如果您正在使用 Xcode 并构建已编译的 Cocoa 项目,您可能会在 StackOverFlow 上发帖获得更好的帮助。