MyBatis 3用logl 4 jコンソールからSQLを出力する方法の例
なぜコンソールでSQLを出力しますか?
もちろん開発デバッグの時に便利になりました。
データベース関連の操作に問題があったら、出力のSQL文によって迅速に問題を調べることができます。
出力情報:
[org.mybatis.spring.Sql Session Utils]-Creating a new Sql Session
[org.mybatis.spring.Sql Session Utils]-Sql Session[org.apphe.ibatis.session.defaults.DefaultSqlSession@33290f98」was not registed for synchronization because synchronization is not active
[org.springframe ework.jdbc.datasource.DataSourceUtils]-Fetch JDBC Connection from DataSource
[org.mybatis.spring.tractions.SpringManaged Transation]-JDBC Connection[jdbc:mysql://rds.aliyuncs.com:3306/yyyy?useUnicode=true&characterEncoding=UTF-8&ゼロDateTimeBehavior=convertToNull、[email protected]、MySQL Connector Java]will not be manage d by Spring
[Datenumber.pageSelect]-=> Preparing:SELECT x.Id、DATE_FOREMAT(x.`Date`、'%Y%m%d')`datestr`,x.befor_num,x.after_num,x.physician_id,y.department_id,y.clinic_id,y.true_name,y.avaar,y.title,y.telephone FROM datenumber x right join physician y on x.physician_id=y.id AND(x.`Date`)=?AND x.`Date`<=?)Where 1=1 AND y.clinic_id=ですかORDER BY x.Date ASC
[Datenumber.pageSelect]-=>Parameeters:2027-3-28(String)、2027-4-4(String)、1(Long)
[Datenumber.pageSelect]-<== Total:19
出力の内容が怖いです。データベース接続の文字、ユーザー名のパスワードが全部出力されました。気をつけてください。
でも、ちょっと悪いのはSQL文とパラメータは別々に出力します。検索ツールにコピーしてデバッグするには自分でパラメータを記入しなければならないので、面倒くさいです。
私のプロジェクト環境
Spring 4.0.2+Spring MVC 4.0.2+MyBatis 3.2.6
方法1:標準ログを使って出力する
この方法は比較的簡単で、MyBatisのプロファイルConfigrationに関連する属性があればいいです。ロゴ4 j.propertiesファイルをもう一つ入れなくてもいいです。
方法二:ロゴ4 jログを使って出力する
1、spring-mybatis.xmlファイルは修正不要です。
2、mybatis.xmlの中で、logl 4 jをログに指定して実現します。これは実際のテストも必要ありません。
3、web.xmlにも配置が必要です。
1、標準ログを使って構成を出力するのは簡単で、ロゴ4 jログを使って構成を出力するのは比較的複雑です。
2、ロゴ4 jは機能が強く、粒度をコントロールしています。
プロファイルで「STDOUT_」と指定するとLOGGINGの時、実際に使っているのはどのログですか?Appche Commonsロギングですか?それともJDKロゴですか?
いいえ、実際はSystem.out.pringlnです。
2017-09-14更新
小さい仲間のフィードバックがありますが、第二の方法で構成してからSQL文を出力しません。log 4 j.propertiesファイルの中に注意してください。
詳細に注意してください。勉強を始めたばかりの友達はまずこの例が提供した配置を完全に使って、正しい出力を得てから、個性的にカスタマイズします。
また、上の構成によってSQL文以外の情報を大量に出力します。ある友達はSQL文、パラメータ、結果だけを出力する配置方法を試してみました。
ここで感謝の意を表します。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。
もちろん開発デバッグの時に便利になりました。
データベース関連の操作に問題があったら、出力のSQL文によって迅速に問題を調べることができます。
出力情報:
[org.mybatis.spring.Sql Session Utils]-Creating a new Sql Session
[org.mybatis.spring.Sql Session Utils]-Sql Session[org.apphe.ibatis.session.defaults.DefaultSqlSession@33290f98」was not registed for synchronization because synchronization is not active
[org.springframe ework.jdbc.datasource.DataSourceUtils]-Fetch JDBC Connection from DataSource
[org.mybatis.spring.tractions.SpringManaged Transation]-JDBC Connection[jdbc:mysql://rds.aliyuncs.com:3306/yyyy?useUnicode=true&characterEncoding=UTF-8&ゼロDateTimeBehavior=convertToNull、[email protected]、MySQL Connector Java]will not be manage d by Spring
[Datenumber.pageSelect]-=> Preparing:SELECT x.Id、DATE_FOREMAT(x.`Date`、'%Y%m%d')`datestr`,x.befor_num,x.after_num,x.physician_id,y.department_id,y.clinic_id,y.true_name,y.avaar,y.title,y.telephone FROM datenumber x right join physician y on x.physician_id=y.id AND(x.`Date`)=?AND x.`Date`<=?)Where 1=1 AND y.clinic_id=ですかORDER BY x.Date ASC
[Datenumber.pageSelect]-=>Parameeters:2027-3-28(String)、2027-4-4(String)、1(Long)
[Datenumber.pageSelect]-<== Total:19
出力の内容が怖いです。データベース接続の文字、ユーザー名のパスワードが全部出力されました。気をつけてください。
でも、ちょっと悪いのはSQL文とパラメータは別々に出力します。検索ツールにコピーしてデバッグするには自分でパラメータを記入しなければならないので、面倒くさいです。
私のプロジェクト環境
Spring 4.0.2+Spring MVC 4.0.2+MyBatis 3.2.6
方法1:標準ログを使って出力する
この方法は比較的簡単で、MyBatisのプロファイルConfigrationに関連する属性があればいいです。ロゴ4 j.propertiesファイルをもう一つ入れなくてもいいです。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>
</configuration>
キーステートメント:
<setting name="logImpl" value="STDOUT_LOGGING"/>
MyBatisはどのログを使って実装すべきかを指定します。この設定が存在しない場合、自動的にログ記録が実行されます。方法二:ロゴ4 jログを使って出力する
1、spring-mybatis.xmlファイルは修正不要です。
2、mybatis.xmlの中で、logl 4 jをログに指定して実現します。これは実際のテストも必要ありません。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
</configuration>
<!-- -->
ここのvalue値はSLF 4 J、Apache Commonsロギング、Log 4 J、JDK loging(Log 4 J 2、Log 4 J以外は検証されていません)となり、順次検索されます。3、web.xmlにも配置が必要です。
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
または次の(未テスト)を使用します。
<listener>
<listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class>
</listener>
4、最後のプロファイルlog 4 j.properties
### Log4j ###
### Spring web.xml , ###
# log4j ( , )
#[ level ] , appenderName1 , appenderName2
log4j.rootLogger=DEBUG,console,file
#-----------------------------------#
#1
log4j.appender.console = org.apache.log4j.ConsoleAppender
log4j.appender.console.Target = System.out
log4j.appender.console.Threshold=DEBUG
#### , ###
#%c: ,
#%m: ,
#%n: ,Windows "/r/n",Unix "/n"
log4j.appender.console.layout = org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=[%c]-%m%n
#-----------------------------------#
#2
log4j.appender.file = org.apache.log4j.RollingFileAppender
#
log4j.appender.file.File=log/tibet.log
#
log4j.appender.file.MaxFileSize=10mb
### ###
#
log4j.appender.file.Threshold=ERROR
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=[%p][%d{yy-MM-dd}][%c]%m%n
#-----------------------------------#
#3 druid
log4j.logger.druid.sql=INFO
log4j.logger.druid.sql.DataSource=info
log4j.logger.druid.sql.Connection=info
log4j.logger.druid.sql.Statement=info
log4j.logger.druid.sql.ResultSet=info
#4 mybatis SQL
log4j.logger.org.mybatis=DEBUG
#log4j.logger.cn.tibet.cas.dao=DEBUG
#log4j.logger.org.mybatis.common.jdbc.SimpleDataSource=DEBUG
#log4j.logger.org.mybatis.common.jdbc.ScriptRunner=DEBUG
#log4j.logger.org.mybatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
#log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.ResultSet=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
二つの方法の比較1、標準ログを使って構成を出力するのは簡単で、ロゴ4 jログを使って構成を出力するのは比較的複雑です。
2、ロゴ4 jは機能が強く、粒度をコントロールしています。
プロファイルで「STDOUT_」と指定するとLOGGINGの時、実際に使っているのはどのログですか?Appche Commonsロギングですか?それともJDKロゴですか?
いいえ、実際はSystem.out.pringlnです。
2017-09-14更新
小さい仲間のフィードバックがありますが、第二の方法で構成してからSQL文を出力しません。log 4 j.propertiesファイルの中に注意してください。
log4j.appender.console.Threshold=DEBUG
この例と一致するかどうか!詳細に注意してください。勉強を始めたばかりの友達はまずこの例が提供した配置を完全に使って、正しい出力を得てから、個性的にカスタマイズします。
また、上の構成によってSQL文以外の情報を大量に出力します。ある友達はSQL文、パラメータ、結果だけを出力する配置方法を試してみました。
ここで感謝の意を表します。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。