Maison > base de données > tutoriel mysql > MyBatis3 utilise log4j pour générer du SQL sur la console (compétences en matière d'exploitation de base de données)

MyBatis3 utilise log4j pour générer du SQL sur la console (compétences en matière d'exploitation de base de données)

PHPz
Libérer: 2017-04-02 17:20:32
original
1745 Les gens l'ont consulté

Pourquoi devons-nous afficher du SQL sur la console ?

Bien sûr, c'est pour plus de commodité lors du développement et du débogage.

S'il y a un problème avec une opération liée à la base de données, nous pouvons rapidement résoudre le problème en fonction de l'instruction SQL de sortie.

Informations de sortie :

[org.mybatis.spring.SqlSessionUtils]-Creating a new SqlSession
[org.mybatis.spring.SqlSessionUtils]-SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@33290f98] was not registered for synchronization because synchronization is not active
[org.springframework.jdbc.datasource.DataSourceUtils]-Fetching JDBC Connection from DataSource
[org.mybatis.spring.transaction.SpringManagedTransaction]-JDBC Connection [jdbc:mysql://rds.aliyuncs.com:3306/yyyy?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull, UserName=223323@222.222.xxx.xxx, MySQL Connector Java] will not be managed by Spring
[Datenumber.pageSelect]-==>  Preparing: SELECT x.Id, DATE_FORMAT(x.`Date`, &#39;%Y%m%d&#39;) `datestr`, x.befor_num, x.after_num, x.physician_id, y.department_id, y.clinic_id, y.true_name, y.avatar, 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]-==> Parameters: 2017-3-28(String), 2017-4-4(String), 1(Long)
[Datenumber.pageSelect]-<==      Total: 19
Copier après la connexion

Le contenu de sortie est assez effrayant. Les caractères de connexion à la base de données, le nom d'utilisateur et le mot de passe sont tous affichés, alors soyez prudent.

Cependant, un inconvénient est que les instructions SQL et les paramètres sont générés séparément. Si vous souhaitez les copier dans l'outil de requête pour le débogage, vous devez remplir les paramètres vous-même, ce qui est plus gênant.

Mon environnement de projet

Spring 4.0.2 + Spring MVC 4.0.2 + MyBatis 3.2.6

Étapes de configuration

1. Le fichier spring-mybatis.xml n'a pas besoin d'être modifié ;

2. Dans mybatis.xml, log4j est spécifié comme implémentation du journal, dont je n'ai pas besoin pour les tests réels.

<?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>
<!-- 实际测试这个文件有没有都可以 -->
Copier après la connexion

La valeur ici peut être SLF4J, Apache Commons Logging, Log4J2, Log4J, JDK logging (sauf Log4J2, Log4J, les autres ne sont pas vérifiés) et sera recherchée dans l'ordre
3. Vous devez également configurer

<listener>
     <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
 </listener>
Copier après la connexion

dans web.xml ou utiliser ce qui suit (non testé)

<listener>
        <listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class>
    </listener>
Copier après la connexion

4. Enfin, configurez log4j.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
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal