在Mac上读取系统日志输出

我有一个为Linux编写的程序,我正在试图在MacOS 10.5机器上构build和运行它。 该程序构build和运行没有问题,但是它使许多调用syslog。 我知道syslogd正在我的mac上运行,但我似乎无法find我的系统日志调用输出到。

系统日志调用的forms

syslog (LOG_WARNING, "Log message"); 

任何想法,我可能会发现我的日志输出?

/var/log/system.log

您可以使用tail -f /var/log/system.log轻松监视它

另请参阅“logging器”( man logger )和“syslog”( man syslog )。

您也可以使用Console.app程序查看日志文件。 这是呃。

如果有疑问,总是有人man syslog

你可以在/var/log/syslogfind你的消息; 我的机器开箱即用,只包含高级信息,因此您可能需要进行设置。

您也可以通过syslog(1)读取消息,或使用类似命令创buildtesting消息

 $ syslog -s -l INFO "Hello, world." 

使用P(“恐慌”)的严重性,你会立即在你的控制台上得到一个令人兴奋的消息。

Mac OS X实现了syslogfunction的超集 。 所有的系统日志都在那里,但作为ASL的一部分。

由Matthew Schinckel在他的回答中提到的控制台是ASL上的GUI。 它将向您显示数据库中存在的任何消息,如边栏中列出的查询所获取的消息。 有两个查询默认情况下, 一个只显示与控制台设施( NSLog ,等等)发送的消息,而另一个显示所有日志消息。 检查全部消息查询; 你可能会在那里find你的信息。

这个“全部”确实带有星号。 如果你看看/etc/asl.conf,你会看到这一行:

 # save everything from emergency to notice ? [<= Level notice] store 

幸运的是,在你的情况下,这个消息将通过这个检查,因为警告超出(比数量less)的通知。

在查理的回答的基础上,我想补充一点,你应该看看syslog.conf(5)的联机帮助文档,还可以查看文件/etc/syslog.conf (这是syslogconfiguration由默认情况下也是如我所见,在OS X 10.5.x上)。

也许有趣的是,苹果在过去使用了一个真正的syslogd ,但同时这一切都转换为ASL(苹果系统日志)。 syslog命令仍然可用,但只能访问这一个日志。 如果要在所有configuration的日志文件中访问ASL的所有日志消息,请使用log命令。

例如,以下显示了Safari在过去两天内生成的所有日志消息(耐心等待,可能需要一段时间):

 log show --predicate 'process == "Safari"' --last 2d 

查看man log了解您可以执行的所有操作,知道的所有参数以及可以过滤的属性。

检查程序中某个地方的openlog调用。 在打开syslog的调用之后, syslog会将其输出保存到该日志文件而不是默认位置。