Log4J2 JsonTemplateLayout时间戳格式配置问题求助
Log4J2 JsonTemplateLayout 生成带时区冒号的时间戳配置
问题背景
要生成2020-02-07T13:38:47.098+02:00格式的时间戳(时区偏移含冒号),但使用JsonTemplateLayout时遇到以下问题:
- 默认配置输出
2020-02-07T13:38:47.098+0200(时区无冒号) - 指定
ISO8601_OFFSET_DATE_TIME_HHCMM枚举格式仍无效 - 尝试使用对应格式字符串时抛出布局初始化异常
问题根源
- Timestamp resolver实际默认行为与文档描述不符,未输出带冒号的时区格式
- 不能将Log4J传统的
%d{...}语法作为timestamp resolver的format参数值 - 自定义格式时错误使用
pattern嵌套结构,导致布局初始化失败
正确配置方案
直接在timestamp resolver中用format字段指定Java DateTimeFormatter兼容的格式字符串,注意毫秒部分用.分隔,格式字符串为yyyy-MM-dd'T'HH:mm:ss.SSSXXX:
修改你的log4j2.json模板中的timestamp配置:
"timestamp": { "$resolver": "timestamp", "format": "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", "timeZone": "UTC" }
关键说明
XXX是Java DateTimeFormatter的模式,会输出带冒号的时区偏移(如+02:00)- 确保Log4J2版本≥2.14.0,低版本对JsonTemplateLayout的格式支持有限
- 原XML配置无需改动,只要模板文件配置正确即可生效
内容的提问来源于stack exchange,提问作者3AKOBAH
相关产品推荐
相关产品推荐

