67

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

syslog 调用的形式为

syslog (LOG_WARNING, "Log message");

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

4

8 回答 8

72

/var/log/system.log

You can monitor it easily using tail -f /var/log/system.log

See also the "logger" (man logger) and "syslog" (man syslog).

于 2013-01-24T16:14:50.150 回答
56

您可能应该使用 Console.app 来查看日志文件。它是珀迪。

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

在此处输入图像描述

于 2008-12-19T05:56:17.143 回答
15

可能值得注意的是:Apple 过去使用的是真实syslogd的,但同时所有这些都已切换到 ASL(Apple 系统日志)。该syslog命令仍然可用,但它只会访问这一个日志。如果要访问配置的所有日志文件中的所有 ASL 日志消息,请使用该log命令。

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

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

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

于 2017-10-19T11:45:50.870 回答
13

有疑问时,总会有man syslog

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

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

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

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

于 2008-12-19T05:46:17.523 回答
11

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

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

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

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

幸运的是,在您的情况下,消息将通过此检查,因为警告高于(小于)通知。

于 2010-01-03T13:29:39.413 回答
1

在查理的回答的基础上,我想补充一点,您应该查看手册页syslog.conf(5)并查看文件/etc/syslog.conf(这是默认定义系统日志配置的位置,而且,正如我所见,在 OS X 10.5.x)。

于 2008-12-19T06:22:35.983 回答
0

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

于 2010-01-03T13:30:39.367 回答
0

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

安装:

brew install lnav

用法:

lnav /var/log/system.log

用户界面本身:

在此处输入图像描述

于 2022-02-05T21:51:12.347 回答