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)
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`, '%Y%m%d') `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
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.
Spring 4.0.2 + Spring MVC 4.0.2 + MyBatis 3.2.6
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> <!-- 实际测试这个文件有没有都可以 -->
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>
dans web.xml ou utiliser ce qui suit (non testé)
<listener> <listener-class>org.apache.logging.log4j.web.Log4jServletContextListener</listener-class> </listener>
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
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!