亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

JDBC appender 的 Log4j2 MDC 配置

JDBC appender 的 Log4j2 MDC 配置

米脂 2023-03-23 16:40:43
我有 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 保留關鍵字,將它從userto更改usrlevel解決lvl了這個問題,現在我在數據庫中有了日志。



查看完整回答
反對 回復 2023-03-23
?
慕工程0101907

TA貢獻1887條經驗 獲得超5個贊

我猜你在每個日志上都推送了數據庫?那么當您推送時,它可能不會進入本地線程來查找用戶 ID 值?

你是手動推送到數據庫嗎?


查看完整回答
反對 回復 2023-03-23
  • 2 回答
  • 0 關注
  • 219 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號