增加 apache 日志的精度以包括毫秒

Posted

技术标签:

【中文标题】增加 apache 日志的精度以包括毫秒【英文标题】:Increase precision of apache log to include milliseconds 【发布时间】:2013-03-02 14:12:55 【问题描述】:

我已修改rsyslogd 的配置以禁用RSYSLOG_TraditionalFileFormat。 但是 apache 日志 /var/log/apache/error.log 仍然只显示第二精度。

还有什么需要配置的吗?

【问题讨论】:

ServerFault 不应该问这个问题吗? 嗯,你可能是对的,但标签在那里! 如何将其移至 ServerFault? 这是旧的,但我想指出一些今天仍然有效的东西。我在 ServerFault (serverfault.com/questions/589768/…) 遇到了这个问题和一个等效问题。在这里,据说这个问题属于 ServerFault(我倾向于同意)。然而,在 Serverfault 上,类似的问题被关闭了,因为被认为离题(完全荒谬!)。此外,人们倾向于选择 SO,因为 SF 人口不多,因此回复的机会较低。我经常看到这个。 【参考方案1】:

http://httpd.apache.org/docs/current/mod/mod_log_config.html 您会看到不同的时间格式,包括毫秒 换成

%t 
to 
%%d/%b/%Y:%Tt-%msec_fract for miliseconds
or
%%d/%b/%Y:%Tt-%usec_fract for microsecs

示例: 2013 年 3 月 16 日:22:44:34-634 16/Mar/2013:22:44:34-634200

文档 apache

%t 接收请求的时间,格式为 [18/Sep/2011:19:18:28 -0400]。最后一个数字表示与 GMT 的时区偏移

%formatt 时间,格式由 format 给出,应该是扩展的 strftime(3) 格式(可能本地化)。如果格式以 begin: 开头:(默认)时间是在请求处理开始时所用的。如果它以 end 开头:它是日志条目被写入的时间,接近请求处理的结束。除了 strftime(3) 支持的格式外,还支持以下格式标记:

自纪元以来的秒数

msec 自 Epoch 以来的毫秒数

usec 自纪元以来的微秒数

msec_frac 毫秒分数

usec_frac 微秒分数

这些标记不能相互组合或 strftime(3) 格式化为相同的格式字符串。您可以改用多个 %formatt 标记。

strftime(3) 格式化 http://man7.org/linux/man-pages/man3/strftime.3.html

【讨论】:

请注意 - 这不适用于 2.2,但仅适用于 apache 2.4+ 似乎在 apache 2.4.10 中不起作用:ErrorLogFormat "%%d/%b/%Y:%Tt-%msec_fract [%-m:%l] [ pid %P:tid %T] [client\ %a] %M% ,\ referer\ %Refereri" 输出:Fri Feb 20 16:32:18 2015-2015-02-20 16:32:18 [核心:通知] [pid 2162:tid 140307424573312] AH00094:命令行:'/usr/sbin/apache2'

以上是关于增加 apache 日志的精度以包括毫秒的主要内容,如果未能解决你的问题,请参考以下文章

如何增加精度计算的时间?

apache2.2 做后端,增加真实ip到日志中

如何以毫秒精度比较两次?

Elastic Beanstalk / ELB 增加了超过 60 毫秒的延迟

如何在 ubuntu 中将 npm 安装时间的等待超时从 30000 毫秒增加到 60000 毫秒

HSQLDB (HyperSQL) - 如何以毫秒精度将 UNIX 时间戳作为数字获取