我有 log4j2.xml 文件:<Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss.SSS} %X{userId} %-5level %logger{36}: %msg%n" /></Console>并且有%X{userId}一部分允许我显示来自 MDC(线程上下文)的内容。我对 JDBC 有类似的配置:<JDBC name="sqlServer" tableName="dbo.application_log"> <ConnectionFactory class="mbms.configuration.Log4j2ConnectionFactory" method="getConnection" /> <Column name="eventDate" isEventTimestamp="true" /> <Column name="level" pattern="%level" /> <Column name="logger" pattern="%logger" /> <Column name="user" pattern="%X{userId}" /> <Column name="message" pattern="%message" /> <Column name="exception" pattern="%ex{full}" /></JDBC>而且它不起作用。当我注释掉用户时,日志存储在数据库中,但是当它存在时我得到异常:Caused by: java.sql.BatchUpdateException: Incorrect syntax near the keyword 'user'.at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeBatch(SQLServerPreparedStatement.java:2065)at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeBatch(NewProxyPreparedStatement.java:2544)at org.apache.logging.log4j.core.appender.db.jdbc.JdbcDatabaseManager.commitAndClose(JdbcDatabaseManager.java:532)... 108 more你知道我如何使用%X{userId}MS SQL 数据库存储这些信息吗?
2 回答
慕田峪7331174
TA贡献1828条经验 获得超13个赞
我找到了一个解决方案: user
并且level
是 SQL 保留关键字,将它从user
to更改usr
为level
解决lvl
了这个问题,现在我在数据库中有了日志。
添加回答
举报
0/150
提交
取消