我在http访问日志文件模式中使用了%t
,它以下列格式提供时间:
[05/Feb/2012:17:11:55 +0000]
有没有办法用毫秒来获得更精确的时间?
Apache mod_log_config表示可以通过以下方式添加格式
%{format}以格式给出的格式中应包含的时间 扩展的strftime(3)格式(可能是本地化的)。如果是格式 以begin开头:(默认)时间开始于 请求处理。如果它从结束开始:它是日志的时间 条目写入,接近请求处理结束。在 除strftime(3)支持的格式外,还有以下格式 支持令牌:
sec number of seconds since the Epoch
msec number of milliseconds since the Epoch
usec number of microseconds since the Epoch
msec_frac millisecond fraction
usec_frac microsecond fraction
这些令牌不能相互组合或strftime(3) 格式化相同的格式字符串。您可以使用多个%{format} t 改为代币。
答案 0 :(得分:2)
如果你得到一个异常说"非法模式字符"请参考这个。 https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
另请尝试%{H:m:s:S}t
答案 1 :(得分:0)
我在日志中使用了以下模式
\"time\":\"%{%usec_frac}t\"
这将导致:
"time":"2018-07-04 06:09:36.066559"
它正在AWS EC2上的Apache Httpd 2.4中运行
答案 2 :(得分:0)
可以在here中找到Apache2日志文件格式的定义。
按照书面规定,您可以将%{format}t
与以下各项结合使用:
Format Description
msec_frac millisecond fraction
usec_frac microsecond fraction
或使用strftime(3):
Format Description
%T The time in 24-hour notation (%H:%M:%S).
%F Equivalent to %Y-%m-%d (the ISO 8601 date format).
...
有关所有可能的占位符,请参见strftime(3) documentation。
这意味着例如:
%{usec_frac}t
> 863572
%{%Y-%m-%d %T}t
> 2020-02-10 08:49:19
组合:
%{%Y-%m-%d %T}t.%{usec_frac}t
> 2020-02-10 08:49:19.863572