如何在系统日志中包含毫秒?

如何在系统日志中包含毫秒?

我已将rsyslog.conf文件配置/etc为包含我自己的日志,如syslogs在文件中一样/var/logs

但打开文件后我得到了这个:

Jun 5 10:09:09 lab-Altos-G330-Mk2 slog[19689]: Hello1
Jun 5 10:09:09 lab-Altos-G330-Mk2 slog[19689]: Hello2

这里timestamp只有秒分辨率。我想知道如何配置rsyslog才能同时显示毫秒?

答案1

默认情况下,rsyslog使用传统时间戳,其date命令格式为:

%b %d %H:%M:%S

这是通过以下行启用的/etc/rsyslog.conf

$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat 

要启用高精度时间戳,请注释掉以下行:

# $ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat 

这将以rsyslogRFC 3339 格式制作时间戳。


可以使用以下命令模拟RFC 3339格式date

% date '+%Y-%m-%dT%H:%M:%S.%6N%:z'
2016-06-05T18:27:58.721607+06:00

或者更短一点:

% date '+%FT%T.%6N%:z'      
2016-06-05T18:29:32.569776+06:00

或者使用本机--rfc-3399选项:

% date --rfc-3339=ns
2016-06-05 18:31:50.897557592+06:00

答案2

在 中/etc/rsyslog.conf,替换

$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

和:

$template CustomFormat,"%timegenerated:1:10:date-rfc3339% %timegenerated:12:24:date-rfc3339% %syslogtag%%msg%\n"
$ActionFileDefaultTemplate CustomFormat

现在,如果你logger test && tail -1 /var/log/syslog,你会得到:

2020-08-10 18:28:49.5397 user: test

相关内容