在Mac上读取syslog输出

52 macos syslog

我有一个为linux编写的程序,我正在尝试在我的MacOS 10.5机器上构建和运行它.该程序构建和运行没有问题,但它会对syslog进行多次调用.我知道syslogd正在我的mac上运行,但我似乎无法找到我的syslog调用输出到的位置.

syslog调用的形式

syslog (LOG_WARNING, "Log message");
Run Code Online (Sandbox Code Playgroud)

知道我在哪里可以找到我的日志输出吗?

mae*_*ics 59

/var/log/system.log

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

另请参阅"logger"(man logger)和"syslog"(man syslog).

  • 在较新的 macOS 版本上,您可以在“/private/var/log/system.log”中找到系统日志。 (3认同)
  • 在较新的 macOS 版本中,似乎不在 `/var/log/system.log` 中。我只能用 Console.app 看到它们 (2认同)

Mat*_*kel 47

您应该使用Console.app来查看日志文件.这是纯粹的.

选择左侧的设备并过滤右侧的消息:

在此输入图像描述

  • 嗯,Console.app自动显示`system.log`和其他日志文件. (20认同)
  • @Pacerier我相信在这种情况下,"purdy"意味着"漂亮"这个词的幽默发音. (5认同)
  • 普迪是什么?? (2认同)

Cha*_*tin 12

如果有疑问,总会有man syslog.

你可以找到你的消息/var/log/syslog; 我的机器设置为开箱即用,仅包含高级消息,因此您可能需要进行设置.

您还可以通过syslog(1)读取消息,或使用类似命令创建测试消息

$ syslog -s -l INFO "Hello, world."
Run Code Online (Sandbox Code Playgroud)

使用严重性为P("恐慌"),您将立即在控制台上收到令人兴奋的消息.


Mec*_*cki 10

也许有趣的是:Apple过去使用的是真实的syslogd,但同时所有这些都转向了ASL(Apple System Log).该syslog命令仍然可用,但它只能访问这一个日志.如果要在配置的所有日志文件中访问ASL的所有日志消息,请使用该log命令.

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

log show --predicate 'process == "Safari"' --last 2d
Run Code Online (Sandbox Code Playgroud)

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


Pet*_*sey 7

Mac OS X实现了syslog功能的超集.所有的syslog都在那里,但是作为ASL的一部分.

Matthew Schinckel在他的回答中提到的控制台是ASL上的GUI.它将向您显示数据库中存在的任何消息,这些消息由侧栏中列出的查询提取.默认情况下有两个查询; one仅显示使用Console工具发送的消息(由NSLog其他内容使用),而另一个显示所有日志消息.检查所有消息查询; 你可能会在那里找到你的信息.

那个"全部"带有星号.如果你查看/etc/asl.conf,你会看到这一行:

# save everything from emergency to notice
? [<= Level notice] store
Run Code Online (Sandbox Code Playgroud)

幸运的是,在您的情况下,消息将通过此检查,因为警告超过(通过次数较少)通知.


小智 5

如果您需要复杂的syslog分析(在终端中每小时导航、正则表达式、与其他文件进行实时比较,甚至运行 SQL syslog) , lnav将为您无缝提供。

安装:

brew install lnav
Run Code Online (Sandbox Code Playgroud)

用法:

lnav /var/log/system.log
Run Code Online (Sandbox Code Playgroud)

用户界面本身:

在此输入图像描述