コンソールにSQLを出力するのはなぜですか?
もちろん、それは開発とデバッグの利便性のためです。
データベース関連操作に問題がある場合は、出力SQLステートメントに基づいて問題をすばやくトラブルシューティングできます。
出力情報:
[org.mybatis.spring.sqlsessionutils] - 新しいsqlsessionを作成します
[org.mybatis.spring.sqlsessionutils] -sqlsession [org.apache.ibatis.session.defaults.defaultsqlsession@333290f98]は、同期は活性ではないため、同期のために登録されていません
[org.springframework.jdbc.datasource.datasourceutils] -DataSourceからJDBC接続をフェッチします
[org.mybatis.spring.transaction.springmanagedtransaction] -jdbc connection [jdbc:mysql://rds.aliyuncs.com:3306/yyyy?useunicode = true&charatereCoding = utf-8&zerodateTimebehavior = converttonull、 [email protected]、mysqlコネクタJava]は春までに管理されません
[dateNumber.PagesElect] - ==>準備:x.id、date_format(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。 dateNumber x右x.physician_id = y.idおよび(x.`date`> =?and x.`date` <=?)で物理yに結合します。ここでy.clinic_id =? X.Date ASCによる注文
[DateNumber.PagesElect] - ==>パラメーター:2017-3-28(String)、2017-4-4(String)、1(Long)
[datenumber.pageselect] - <==合計:19
出力コンテンツは非常にひどいです。データベース接続文字とユーザー名とパスワードは出力ですので、注意してください。
ただし、1つの悪い点は、SQLステートメントとパラメーターが個別に出力されることです。それらをクエリツールにコピーしてデバッグしたい場合は、パラメーターを自分で入力する必要があります。これはより厄介です。
私のプロジェクト環境
スプリング4.0.2 +スプリングMVC 4.0.2 + MyBatis 3.2.6
方法1:標準のログ出力を使用します
この方法は比較的簡単です。関連するプロパティを使用してMyBatisの構成ファイルを構成するだけで、log4j.propertiesファイルを配置する必要はありません。
<?xml version = "1.0" encoding = "utf-8"?> <!doctype構成public " - // mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd" value = "stdout_logging"/> </settings> </configuration>
重要なステートメント:
<name = "logimpl" value = "stdout_logging"/>
MyBatisが使用するロギングの実装を指定します。この設定が存在しない場合、ロギングの実装が自動的に発見されます。
方法2:log4jログ出力を使用します
1。Spring-Mybatis.xmlファイルを変更する必要はありません。
2。MyBatis.xmlで、LOG4Jをログの実装として使用するように指定しますが、実際にテストする必要はありません。
<?xml version = "1.0" encoding = "utf-8"?> <!doctype構成public " - // mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd" </settings> </configuration> <! - 実際、このファイルが利用可能かどうかをテストできます - >
ここでの値の値は、SLF4J、Apache Commons Logging、Log4J2、Log4J、JDKロギング(log4j2、log4j、その他の未確認を除く)であり、順番に検索されます。
3。web.xmlでの構成も必要です
<リスナー> <リスナークラス> org.springframework.web.util.log4jconfiglistener </ristener-class> </ristener>
または以下を使用します(テストされていません)
<リスナー> <リスナークラス> org.apache.logging.log4j.web.log4jservletcontextListener </ristener-class> </ristener>
4.最後に、log4j.propertiesを構成します
### log4j Configuration ##### ### springと組み合わせて、このファイルの場所をWeb.xmlで指定し、リスナー######define log4jの出力レベルと出力宛先を追加する必要があります(宛先をカスタマイズできます)#[レベル]#[レベル]、Appatdername2 log4j.Rootloggerger、debug、debug、debug、appendername2 #--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- log4j.appender.console.threshold = debug #####ログ出力形式を柔軟に指定できます。次の行は、特定の形式を指定します。 #############出力ログ情報が属するカテゴリは通常、クラス#%mのフルネームです:コードで指定されたメッセージ、特定のログ情報生成#%n:キャリッジリターンラインブレークを出力、Windowsプラットフォームは「/r/n」、Unixプラットフォームは「/n」 org.apache.log4j.patternlayout log4j.appender.console.layout.conversionpattern = [%c] - %m%n #-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- When the file size reaches the specified size, a new file is generated log4j.appender.file = org.apache.log4j.rollingfileappender #logファイル出力ディレクトリlog4j.appender.file.file = log/tibet.log #define最大ファイルサイズlog4j.appender.file.file.maxfilesize = 10mb ###出力ログ情報log4j.appender.file.layout = org.apache.log4j.patternlayout log4j.appender.file.layout.conversionpattern = [%p] [%d {yy-mm-dd}] [%c]%m%n #----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ 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.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 2つの方法の比較
1.標準のログ出力を使用した構成は簡単ですが、log4jログ出力を使用する構成は比較的複雑です。
2。Log4Jには強力な機能があり、比較的細かい制御粒度があります。
構成ファイルで「stdout_logging」として指定された場合、実際にどのログの実装が使用されますか? Apache CommonsロギングまたはJDKロギング?
それらのどれも、実際にはsystem.out.pringlnです。
2017-09-14に更新されました
一部の友人は、2番目の方法を構成した後、SQLステートメントを出力しないと報告しています。 log4j.propertiesファイルに注意してください:
log4j.appender.console.threshold = debug
この例と一致していますか?
詳細に注意してください。勉強を始めたばかりの友人は、まずこの例で提供されている構成を使用してから、個人的な方法でカスタマイズできます。
さらに、上記の構成によれば、SQLステートメント以外に大量の情報を出力します。友人は、SQLステートメント、パラメーター、および結果のみを出力しようとしました。
ここでありがとう、そしてあなたと共有してください:
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。