java - Log4j2 PatternLayout 将地图值格式化为日期
问题描述
使用 log4j2 我正在使用 MapMessage。在地图中,我有一个以日期为值的键。当使用 PatternLayout 模式时,有没有办法以某种格式显示这个日期,就像 LogEvent date 一样?
例如,有没有一种方法可以将“myDate”的格式设置为 %d: 所用的格式
<PatternLayout pattern="%d{MM-dd-yyyy HH:mm:ss,SSS} [%t] ... %map{myDate} %n"/>
?
谢谢
解决方案
开箱即用无法提供格式信息。基本上你有几个选择:
- 扩展 MapMessage 以根据需要自定义日期字段的格式。
- 创建一个自定义 PatternConverter,您可以在其中编写类似 %myDate{"MM-dd-yy HH:mm:ss,SSS", $${map:myDate}} 的代码
- 为LOG4J2-2841提供拉取请求以增强 PatternConverter 以访问具有日期值的第二个参数。这将允许类似 %myDate{"MM-dd-yy HH:mm:ss,SSS", $${map:myDate}}
如果您要实施第 2 项,则最好执行第 3 项,因为工作几乎相同。
推荐阅读
- java - 用户偏好的对比度极性?(操作系统暗模式设置)
- angular - Angular Tree Shaking:它究竟是如何工作的?
- html - 对齐图像
- python - 如何包含嵌入在 WiX 设置项目本身中的文件
- sql - 使用 CASE WHEN 在 where 子句中比较 SQL 中的两个日期?
- python - Django - 链接多个 ChoiceField 的
- postgresql - 在 docker compose 中重命名卷,docker 派生自 postgres
- python - Python:创建for循环,直到两个列表匹配
- r - 如何在 dplyr 中对 tibble 行中的条目进行排序?
- python - 优化仅在 Python 中搜索一小部分数据的 NBT 解析器