如何修改Logback配置将@timestamp字段重命名为logdate并设置为ISO8601格式
修改Logback LogstashEncoder的时间戳字段名与格式
要实现你想要的效果,只需要对<encoder>部分做两处调整就行,直接看修改后的完整配置:
<appender name="CHRONO" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${CHRONO_LOGS_FILE_NAME}</file> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${CHRONO_LOGS_FILE_PATTERN}</fileNamePattern> <maxFileSize>${MAX_FILE_SIZE}</maxFileSize> <maxHistory>${MAX_HISTORY}</maxHistory> <totalSizeCap>${TOTAL_SIZE_CAP}</totalSizeCap> </rollingPolicy> <encoder class="net.logstash.logback.encoder.LogstashEncoder"> <findAndRegisterJacksonModules>false</findAndRegisterJacksonModules> <!-- 修改时间戳字段名为logdate --> <timestampFieldName>logdate</timestampFieldName> <!-- 设置为ISO8601标准格式 --> <timestampPattern>yyyy-MM-dd'T'HH:mm:ss.SSSXXX</timestampPattern> <customFields>{ "APP_NAME":"${APP_NAME}", "APP_VERSION":"${APP_VERSION}", "INSTANCE": "${INSTANCE}"} </customFields> </encoder> </appender>
关键修改点说明:
timestampFieldName:这个配置项专门用来覆盖LogstashEncoder默认的@timestamp字段名,直接设置为logdate就能替换掉原来的字段。timestampPattern:调整后的格式yyyy-MM-dd'T'HH:mm:ss.SSSXXX会生成完全符合ISO8601标准的时间字符串,其中:T是日期和时间的分隔符,符合标准要求SSS保留毫秒级精度XXX会输出带冒号的时区偏移(比如+01:00),和你给出的示例格式完全匹配
调整后,你的日志输出里的时间字段就会变成:
{ "logdate": "2019-12-23T15:23:30.123+01:00", "@version": "1", .... }
内容的提问来源于stack exchange,提问作者Taoufik J
相关产品推荐
相关产品推荐

