OSX /var/log/system.log——我在哪里定义修剪间隔?

Dav*_*ude 7 mac log-files mac-osx syslog

我有一个脚本会定期检查 /var/log/system.log,我注意到在我们的网络中,有些机器通过重新启动和其他活动将日志文件保留一个月,而有些则每晚或每次重新启动时清除文件。

有谁知道这里的确切规则,或者我是否可以指定间隔?提前致谢。

Gor*_*son 6

在 OS X 上,/ newsyslogvar/log/system.log由命令轮换,每当 Mac 运行时,该命令在每小时半点运行(请参阅 /System/Library/LaunchDaemons/com.apple.newsyslog.plist)苏醒。轮换规则在/etc/newsyslog.conf中,其中相关行是:

# logfilename          [owner:group]    mode count size when  flags [/pid_file] [sig_num]
/var/log/system.log                     640  7     *    @T00  J
Run Code Online (Sandbox Code Playgroud)

如果我理解正确(请参阅newsyslog.conf 手册页),“何时”字段中的“@T00”表示如果 newsyslog 在午夜和凌晨 1 点之间运行,即在凌晨 12:30 运行,日志将被轮换。但是,如果 Mac 在 12:30 关闭或休眠,则不会发生此运行,并且当天不会轮换日志,这可能就是您看到如此多变的结果的原因。

如果您想更改轮换标准,请随时编辑 /etc/newsyslog.conf;大多数其他日志根据大小进行轮换,我不确定为什么 system.log 不同。

更新:从 10.9 开始,system.log 的轮换控制从 /etc/newsyslog.conf 移到 /etc/asl.conf(Apple System Log 工具的配置,它会写入 system.log)。它将有一个这样的部分:

# Rules for /var/log/system.log
> system.log mode=0640 format=bsd rotate=seq compress file_max=5M all_max=50M
? [= Sender kernel] file system.log
? [<= Level notice] file system.log
? [= Facility auth] [<= Level info] file system.log
? [= Facility authpriv] [<= Level info] file system.log
Run Code Online (Sandbox Code Playgroud)

“rotate=seq compress file_max=5M all_max=50M”部分控制归档和保留。有关更多信息和选项,请参阅man asl.conf

日志系统在 10.12 中得到了非常彻底的重写,但这似乎没有改变。