我有 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
提交
取消