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

Log4j2:Properties格式下配置ColumnMapping列类型的疑问

解决Log4j2 Properties配置中ColumnMapping的类型参数冲突问题

问题描述

我想为ColumnMapping指定列类型参数,但type参数已经被用来声明当前配置项为ColumnMapping类型。我的Properties配置如下:

appender.message_appender.columnMappings[1].type = ColumnMapping
appender.message_appender.columnMappings[1].name = journal_id
appender.message_appender.columnMappings[1].type = java.lang.Integer # 不能有两个type参数

我不知道该怎么把columnMappings[1]的类型设为int。而XML格式可以这样实现:

<Jdbc name="databaseAppender" tableName="dsLogEntry" ignoreExceptions="false">
  <DataSource jndiName="java:/comp/env/jdbc/TestDataSourceAppender" />
  <ColumnMapping name="journal_id" type="java.lang.Integer"/>
  <MessageLayout />
</Jdbc>

解决方案

在Log4j2的Properties格式配置中,无需单独声明type=ColumnMapping——因为columnMappings本身就是ColumnMapping类型的列表,Log4j2会自动推断数组中每个元素的组件类型。直接移除多余的type=ColumnMapping配置,保留用于指定列数据类型的type参数即可:

appender.message_appender.columnMappings[1].name = journal_id
appender.message_appender.columnMappings[1].type = java.lang.Integer

如果需要将日志事件中的特定字段映射到该列,还可以添加pattern参数指定字段来源(比如MDC中的journal_id):

appender.message_appender.columnMappings[1].name = journal_id
appender.message_appender.columnMappings[1].type = java.lang.Integer
appender.message_appender.columnMappings[1].pattern = %X{journal_id}

内容的提问来源于stack exchange,提问作者Грищенков Георгий

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 15:08:23