当我在 OS X (10.10.1) 中将消息记录到 syslog 时,它会将时间戳截断为秒。例如,如果我将消息记录到文件中,我能够捕获毫秒。当日志快速而猛烈地涌入时,毫秒很重要。是否有办法在 OS X 的 syslogd 实现中设置毫秒精度?
答案1
OS Xsyslogd
默认以微秒精度将日志事件存储在“Apple 系统日志”(asl)数据库/存储中,并提供纳秒精度。
然而,当这些数据被复制到传统的平面日志文件中时/var/log/system.log
,会使用传统的精确到秒的时间戳格式,因为这些平面日志文件一直都是这样使用的。
您可以使用syslog
命令行工具查询 asl 数据库,并且可以使用各种命令行选项(包括)指定输出格式-F
。例如,要以标准日志文件格式(但精度为微秒)转储 asl 数据库中的所有内容,请执行以下操作:
syslog -F std.6
请注意,如果您的进程以如此快的速度将如此多的消息记录到 syslog 中,以至于亚秒级的时间戳都很重要,那么您可能还需要查看asl.conf(5)
手册页,以确保您的mps_limit
和dup_delay
参数设置方式使得所有日志消息实际上都存储在数据库中,而不是被限制或丢弃。