logback JSON - 以 Epoch 时间格式打印日志时间戳(以秒为单位)
logback JSON - print log timestamp in Epoch time format(in seconds)
我的 logback.xml 中有以下内容用于登录 JSON。我想以纪元时间格式(以秒为单位)打印下面的 log_timestamp 字段,而不是日期和时间。
<appender name="JSON_CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<pattern>
<pattern>
{
"appNname": "${appName}",
"log_timestamp":"%date",
"level": "%level",
"method":"%M",
"class":"%c",
"user_id": "%mdc{user_id}"
}
</pattern>
</pattern>
</providers>
</encoder>
</appender>
问题与
相关
我尝试了上面 link 中的建议,直接在 encoder.But 下包含以下内容,但没有用。
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<layout class="net.logstash.logback.layout.LogstashLayout">
<timestampPattern>[UNIX_TIMESTAMP_AS_NUMBER]</timestampPattern>
</layout>
如果有人给我提示以实现此目标,我将不胜感激。
由于 logback 的 %date
转换词不支持纪元时间,您需要使用 logstash-logback-encoder 的 timestamp
提供程序来添加时间戳字段。
<appender name="JSON_CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<timestamp>
<fieldName>log_timestamp</fieldName>
<pattern>[UNIX_TIMESTAMP_AS_NUMBER]</pattern>
</timestamp>
<pattern>
<pattern>
{
"appName": "${appName}",
"level": "%level",
"method":"%M",
"class":"%c",
"user_id": "%mdc{user_id}"
}
</pattern>
</pattern>
</providers>
</encoder>
</appender>
请注意,时间戳值将以毫秒为单位,而不是秒。
如果你想要秒,那么我认为唯一的方法是实现自定义 JsonProvider
我的 logback.xml 中有以下内容用于登录 JSON。我想以纪元时间格式(以秒为单位)打印下面的 log_timestamp 字段,而不是日期和时间。
<appender name="JSON_CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<pattern>
<pattern>
{
"appNname": "${appName}",
"log_timestamp":"%date",
"level": "%level",
"method":"%M",
"class":"%c",
"user_id": "%mdc{user_id}"
}
</pattern>
</pattern>
</providers>
</encoder>
</appender>
问题与
我尝试了上面 link 中的建议,直接在 encoder.But 下包含以下内容,但没有用。
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<layout class="net.logstash.logback.layout.LogstashLayout">
<timestampPattern>[UNIX_TIMESTAMP_AS_NUMBER]</timestampPattern>
</layout>
如果有人给我提示以实现此目标,我将不胜感激。
由于 logback 的 %date
转换词不支持纪元时间,您需要使用 logstash-logback-encoder 的 timestamp
提供程序来添加时间戳字段。
<appender name="JSON_CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
<providers>
<timestamp>
<fieldName>log_timestamp</fieldName>
<pattern>[UNIX_TIMESTAMP_AS_NUMBER]</pattern>
</timestamp>
<pattern>
<pattern>
{
"appName": "${appName}",
"level": "%level",
"method":"%M",
"class":"%c",
"user_id": "%mdc{user_id}"
}
</pattern>
</pattern>
</providers>
</encoder>
</appender>
请注意,时间戳值将以毫秒为单位,而不是秒。
如果你想要秒,那么我认为唯一的方法是实现自定义 JsonProvider