You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 15:02:48