有没有办法解析XML中的“%m”或“%msg”或“%message”?

时间:2014-07-02 21:52:53

标签: java database jdbc log4j

我正在使用log4j将数据插入数据库。

我想插入这个包含2列的简单表: Col1:ID 第2栏:姓名

这是我的配置文件

<JDBC name="databaseAppender" tableName="test9" >
  <ConnectionFactory class="log4j2.jdbc" method="getDatabaseConnection" />
  < Column name="id" pattern='%m' />
  < Column name="name" pattern='%m' />
</JDBC>

在我的java中,我使用

logger.info("1", "john");

无论我做什么,我都只能这样插入:

Col1: 1
Col2: 1

我想实现一种插入方法:

Col1: 1
Col2: john

这甚至可能吗?就像解析%m一样?或模式设计背后有什么诀窍?

感谢您的努力!!

1 个答案:

答案 0 :(得分:0)

我自己找到了解决方案......以防万一有人会坚持这个。我非常怀疑我是唯一一个使用log4j2登录数据库并使用多条消息的人。

所以发送多个列的方法是通过ThreadContext:http://logging.apache.org/log4j/2.x/log4j-api/apidocs/org/apache/logging/log4j/ThreadContext.html

它就像一张地图,你可以在其中“放置”一对字符串。

在XML模式方面。只需通过执行%X {key}

获取值

例如:

ThreadContext.put("id", 1);
ThreadContext.put("name", john);

注意:必须记录任何消息才能触发上述数据发送到db。

配置:

<column name="id" pattern="%x{id}">
<column name="name" pattern="%x{name}">