當前位置:首頁 » 編程語言 » log4jmybatissql

log4jmybatissql

發布時間: 2025-03-18 07:33:33

❶ mybatis怎麼列印出sql,我被誤導了很多年

探討MyBatis列印SQL語句的方法,常見答案建議將java.sql.*,com.ibatis的日誌級別配置為debug以實現實現。但實際操作中發現,列印SQL與上述Java框架並無直接關聯。MyBatis使用的日誌對象是org.apache.ibatis.logging.slf4j.Slf4jImpl(statementLog)。日誌的列印與否取決於statementLog與log4j.xml或log4j.properties中log4j.logger的匹配情況。

詳細分析如下:

1. 核心在於statementLog的調試級別,決定是否列印SQL。

具體實現於org.apache.ibatis.executor.SimpleExecutor,當調用ConnectionLogger對象時,便執行列印日誌的代碼。

關鍵代碼行位於org.apache.ibatis.logging.jdbc.BaseJdbcLogger的ConnectionLogger(BaseJdbcLogger).debug(String, boolean)處,位於第141行。

2. statementLog的注入來源於MappendStatement。

MappendStatement由org.apache.ibatis.session.Configuration注冊。查看MappendStatement的構造過程,LogFactory.getLog(xx)這行代碼是關鍵。

從這段代碼的值來看,是否使用與java.sql、com.ibatis框架無關的日誌框架。

MyBatis支持使用多種日誌框架,包括slf4j或common-logger,其兼容性足夠強大。

在類org.apache.ibatis.logging.LogFactory中,載入類時會執行靜態代碼塊,嘗試各種日誌框架實現。若成功,則實例化logConstructor,確保即使客戶端未包含特定實現,代碼也不會出錯。

總結而言,配置log4j.logger的值以指定的日誌級別,即可實現MyBatis列印SQL語句的目的。例如,配置log4j.logger.com.helijia.search=DEBUG。

❷ 如何控制Mybatis的SQL日誌輸出

首先要說明的是:
Mybatis是用Mapper類的全路徑名,作為logger的名稱的。
Mybatis中,列印SQL語句的日誌級別是DEBUG,而列印SQL執行結果集的日誌級別是TRACE。(因為有些SQL可能語句簡單,但是結果集很多,分開級別,有利於用戶控制輸出。)
記住這兩點,對控制Mybatis的SQL日誌輸出很重要。
比如,我們的應用是:
com.test.app
而mapper類所在的路徑為:
com.test.app.
則我們可以分別控制應用的業務日誌和SQL日誌的輸出。
如下的Log4j2.xml將輸出所有業務日誌,以及SQL語句日誌
引用
<Loggers>
<Logger name="com.test.app." additivity="false" level="DEBUG">
<AppenderRef ref="sql_log"/>
<AppenderRef ref="Console"/>
</Logger>
<Logger name="com.test.app" additivity="false" level="TRACE">
<AppenderRef ref="biz_debug"/>
<AppenderRef ref="Console"/>
</Logger>
</Loggers>
如下的Log4j2.xml將輸出所有業務日誌,以及SQL語句日誌,SQL語句執行結果日誌
引用
<Loggers>
<Logger name="com.test.app." additivity="false" level="TRACE">
<AppenderRef ref="sql_log"/>
<AppenderRef ref="Console"/>
</Logger>
<Logger name="com.test.app" additivity="false" level="TRACE">
<AppenderRef ref="biz_debug"/>
<AppenderRef ref="Console"/>
</Logger>
</Loggers>

❸ Mybatis的SQL語句怎麼沒有輸出到控制台

Mybatis的SQL語句怎麼沒有輸出到控制台
在scr下添加一個log4j.properties文件,大致模版可以網路,主要是把日誌級別log4j.rootLogger=debug,stdout設置為像我這樣的debug,因為mybatis的sql語句的輸出是debug()輸出的

❹ mybatis怎麼配置log4j列印出sql語句

在程序調試時mybatis並沒有hibernate所提供的showsql功能,只能通過配置log4j日誌輸出級別的方式來列印sql。但網上搜到的答案幾乎都是下面的配置方式

log4j.rootLogger=info,stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout
###顯示SQL語句部分
log4j.logger.com.ibatis=DEBUG
log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=

rootLogger的級別是info,防止其他地方輸出debug的調試代碼(rootLogger若設為debug了,mybatis也沒必要再設置了)。但這段代碼根本沒有作用!不知是不是我使用的jar包版本比較新的緣故(3.4.1)。經過一系列的嘗試,終於找到了解決方案,直接修改層的輸出級別即可:

<loggers>
<Logger name="com.github.vita.code." level="trace" />
<root level="info">
<appender-ref ref="Console"/>
</root>
</loggers>123456123456

上面的是log4j 2的XML配置,1中對應的為log4j.logger.com.github.vita.code.=trace。這兒把輸出調成了更低的trace,可以看到更詳細的信息。

❺ 如何輸出mybatis里的SQL

在MyBatis中使用log4j來輸出SQL語句,需要在web.xml中配置log4j.properties文件的路徑。配置文件內容如下:

log4j.rootLogger=DEBUG, Console

#Console

log4j.appender.Console=org.apache.log4j.ConsoleAppender

log4j.appender.Console.layout=org.apache.log4j.PatternLayout

log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n

通過設置不同的日誌級別,可以控制輸出的詳細程度:

log4j.logger.java.sql.ResultSet=INFO

log4j.logger.org.apache=INFO

log4j.logger.java.sql.Connection=DEBUG

log4j.logger.java.sql.Statement=DEBUG

log4j.logger.java.sql.PreparedStatement=DEBUG

如果希望減少輸出量,特別是不想看到Spring框架的DEBUG級別日誌,可以將第一行的日誌級別由DEBUG改為INFO。

需要注意的是,配置完成後,需要重啟應用伺服器以使配置生效。此外,還可以根據具體需求調整日誌級別和輸出格式,以滿足不同場景下的日誌記錄需求。

通過這種方式,可以方便地監控和調試MyBatis中的SQL執行情況,及時發現和解決問題。

熱點內容
win7文件夾收藏 發布:2025-03-18 16:58:56 瀏覽:978
伺服器地址區域華北和華南 發布:2025-03-18 16:52:17 瀏覽:874
用友的伺服器如何卸載 發布:2025-03-18 16:51:25 瀏覽:730
tar打包文件夾 發布:2025-03-18 16:49:21 瀏覽:434
ip直接訪問伺服器 發布:2025-03-18 16:49:12 瀏覽:425
文件夾粘貼不了 發布:2025-03-18 16:47:47 瀏覽:172
安卓手機微信怎麼收費 發布:2025-03-18 16:47:35 瀏覽:442
安卓手機消息發送按鈕怎麼設置 發布:2025-03-18 16:45:33 瀏覽:719
夏天存儲冬衣 發布:2025-03-18 16:40:17 瀏覽:244
vb腳本引擎報錯 發布:2025-03-18 16:39:36 瀏覽:979