微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

logback JSON - 以纪元时间格式打印日志时间戳以秒为单位

如何解决logback JSON - 以纪元时间格式打印日志时间戳以秒为单位

我的 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>

问题与print an epoch timestamp instead of the date and time

有关

我通过在编码器下直接包含以下内容来尝试上述链接中的建议。但没有奏效。

<encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
   <layout class="net.logstash.logback.layout.LogstashLayout">    
     <timestampPattern>[UNIX_TIMESTAMP_AS_NUMBER]</timestampPattern>
   </layout>

如果有人给我提示来实现这一点,我很感激。

解决方法

由于logback的%date转换词不支持epoch time,所以需要使用logstash-logback-encoder的timestamp provider来添加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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。