如何在 Mac 上写入 /var/log/system.log

如何在 Mac 上写入 /var/log/system.log

我在 Mac 上跟踪 system.log:

tail -f -n 0 /var/log/system.log

但我不知道如何写入该日志。它似乎确实是机器上的主要日志。我试过:

logger foobar  # didn't work
syslog -s -l error "message to send"  # didn't work

有人知道如何在 Mac 上写入 system.log 吗?

更新:

如果我跑:log stream

然后使用:

logger -is -t krypted "Hello L"

它将显示在流中,但不会显示在/var/log/system.log.诡异的。

答案1

流消息是二进制日志文件的一部分。苹果正在转向统一的日志系统,因此日志不再以同样的方式工作,至少在默认情况下是这样。人们可能会尝试syslogd通过配置文件之一或两个来配置和/或 ASL(Apple 系统记录器),/etc/syslog.conf以及/etc/asl.conf. (还有更多的 ASL 配置文件存储在 中/etc/asl。)这可能需要查阅手册页来了解如何为某些消息生成纯文本日志文件。其中一些手册可能是man 1 log、、、man 1 syslogman 5 syslog.confman 8 syslog我还没有确定具体如何做到这一点,但我想为您提供某种方法来生成、查看和“尾随”自定义消息。 (如果我确实学习如何通过配置新的日志系统将某些消息发送到纯文本文件,我会回来更新这个答案。看起来,至少,完成,因为 中确实存在纯文本文件/var/log。)


可以使用syslog -s和发送消息logger。 (该-s选项将日志消息发送到syslogd,并且syslog可以执行更多操作logger。)以与 类似的方式跟踪日志的简单方法tail是利用Console.app。打开程序并将光标放在下面列出的本地计算机上设备。在搜索字段中,提供用于发送消息的程序的名称:syslog或之一logger。接下来,打开终端并发送消息。

syslog -s "test message"

然后可以在控制台中看到该消息,如下所示。

Apple 控制台的片段

可以从日志中获取消息。使用--info和/或--debug选项指定log默认情况下忽略的行。在选项中指定发送系统日志消息的进程--predicate

log show --info --debug --predicate "process == 'logger'"

或者

log show --info --debug --predicate "process == 'syslog'"

要获得与 类似的效果tail,请使用该stream命令。

log stream --info --debug --predicate "process == 'logger'"

或者

log stream --info --debug --predicate "process == 'syslog'"

启动流后,发送一条消息以见证它的行为方式与 类似tail,如图所示。

Apple 日志命令流

该命令syslog -s "test message"用于发送消息。

相关内容