我正在使用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一样?或模式设计背后有什么诀窍?
感谢您的努力!!
答案 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}">