Cet article introduit principalement une explication détaillée des journaux combinés avec Log4j et Slf4J dans le cadre SSM, et les partage avec vous. Les détails sont les suivants:
Ajoutez d'abord des packages JAR LOG4J et SLF4J
<! - Traitement du journal <! - SLF4J Package de journaux -> <dependency> <proupId> org.slf4j </proncId> <Artifactid> Slf4j-API </lefactive> <DERVIÈRE> 1.7.21 </prenid> <pedigency> <Dedency> <version> 1.7.21 </ version> </ dépendance> <! - Introduction du package de journal -> <dependency> <proupId> Log4j </proupId> -> <artifactId> Log4j </ artifactid> <version> 1.2.16 </-version> </ Dependency>
L'usine de journaux intégrés de MyBatis fournit des fonctions de journalisation. L'implémentation de journal spécifique a les outils suivants:
1. L'outil de mise en œuvre du journal à choisir est déterminé par l'usine de journaux intégrée de MyBatis. Il utilisera le premier trouvé (trouver dans l'ordre indiqué ci-dessus). Si aucun d'entre eux n'est trouvé, la fonction de journalisation sera désactivée.
De nombreux serveurs d'applications contiennent déjà des journaux de communication, tels que Tomcat et WebShpere, de sorte que MyBatis l'implémentera en tant que journal spécifique. Il est très important de s'en souvenir. Cela signifie que dans un environnement tel que WebSphere - WebSphere fournit une implémentation privée de la journalisation des communes, et votre configuration log4j sera ignorée. Cette approche est inévitablement triste. Comment mybatis peut-il ignorer votre configuration? En fait, parce que la journalisation des communes existe déjà, Log4j est naturellement ignoré par ordre de priorité! Cependant, si votre application est déployée dans un environnement contenant la journalisation des communs et que vous souhaitez utiliser d'autres cadres de journalisation, vous pouvez sélectionner une implémentation de journal différente en ajoutant un paramètre (config) au fichier de configuration MyBatis MyBatis-Config.xml.
<? 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> <! <paramètres> <paramètre name = "logIMPL" value = "slf4j" /> </daits> <! - Ce fichier peut être un fichier vide, mais il doit avoir ce fichier -> <! - L'emplacement des plugins dans le fichier de configuration doit répondre aux exigences, sinon une erreur sera signalée dans l'ordre suivant: Properties ?,, paramètres? Environments ?, DatabaseIdProvider ?, MAPTEURS? -> <glugins> <! - com.github.pagehelper est le nom du package où se trouve la classe Pagehelper -> <plugin interceptor = "com.github.pagehelper.pagehelper"> <! - Ce paramètre peut être défini sans définir dans les versions dans les versions 4.0.0 --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- En tant que numéro de page de pagenum -> <! - L'effet est le même que le pagenum dans startpage -> <propriété name = "offSetSpagenum" value = "true" /> <! - Ce paramètre par défaut est false -> <! - Lorsque vous êtes défini, comptez la query sera effectuée à l'aide de Rowbounds Pagination -> <propriété Name = "RowboundswithCount" pagesize = 0 ou rowbounds.limit = 0, tous les résultats seront interrogés -> <! - (équivalent au fait que la requête de la page n'est pas exécutée, mais le résultat est toujours le type de page) -> <Propriété Nom = "PageSizezero" Value = "True" /> <! - La version 3.3.0 est disponible - PageSizeSero "Value <! Interrogez la première page, si Pagenum> pages interrogera la dernière page -> <! - Lorsque la rationalisation est désactivée, si le pagenum <1 ou le pagenum> renvoie les données vides -> <! - <Nom de propriété = "raisonnable" value = "false" /> -> <! - Version 3.5.0 est disponible - pour prendre en charge la méthode des paramètres de démarrage (paramètres de l'objet) Mappage pour obtenir des valeurs de Map ou ServLetRequest -> <! - Vous pouvez configurer le pagenum, la pages de pages, le compte, le pagesizezero, raisonnable, l'ordre et l'utilisation de la valeur par défaut pour les mappages -> <! - Si vous ne comprenez pas ce sens, ne copiez pas la configuration Autochtonale -> <! - <Propriété Nom = "Params" Value = "Pagenum = PagehelPerts; /> -> <! - Prise en charge des paramètres de pagination de passage via les paramètres d'interface du mappeur -> <propriété name = "supportMethodsarguments" value = "false" /> <! - toujours toujours return pageInfo type, vérifiez si le type de retour est pageinfo, aucune page de retour -> <propriété name = "returnPageInfo" value = "nul" /> </gingin>
Les valeurs facultatives de LogIMPL sont: SLF4J, LOG4J, LOG4J2, JDK_LOGGING, Commons_logging, stdout_logging, no_logging ou le nom de classe entièrement qualifié de la classe qui implémente l'interface Org.apache.ibatis.logging.log, et le constructeur de cette classe doit être une chaîne (chaîne) comme paramètre. (Vous pouvez vous référer à la mise en œuvre d'org.apache.ibatis.logging.slf4j.slf4jimpl.java)
Vous appelez une méthode au besoin:
org.apache.ibatis.logging.logfactory.useslf4jlogging (); org.apache.ibatis.logging.logfactory.uselog4jlogging (); org.apache.ibatis.logging.logfactory.usejdklogging (); org.apache.ibatis.logging.logfactory.usejdklogging (); org.apache.ibatis.logging.logfactory.USECommonsLogging (); org.apache.ibatis.logging.logfactory.usestdoutLogging ();
Si vous avez besoin d'appeler l'une des méthodes ci-dessus, appelez-la avant toutes les autres méthodes MyBatis. De plus, il est seulement significatif d'appeler la méthode correspondante dans la prémisse qu'elle existe dans l'implémentation du journal correspondant, sinon MyBatis sera ignoré. Si Log4j n'existe pas dans votre environnement, mais que vous appelez la méthode correspondante, MyBatis ignorera cet appel et recherchera à la place l'implémentation du journal dans l'ordre de recherche par défaut.
2. Configurer web.xml
<! - Load Log4j -> <context-param> <param-name> log4jconfiglocation </ param-name> <param-value> classpath: log4j.properties </ param-value> </ context-param> <ouniner> <écouteur-Class> org.springframework.web.util.log4jconfigSener </ écouteur-class> </ écouteur
3. Créez simplement un fichier nommé log4j.properties dans l'application ClassPath, le contenu spécifique du fichier est le suivant:
log4j.rootlogger = info, console, quotidien # todo Veuillez les ajouter lors de la publication à Alibaba Cloud. De plus, la console ne sortit pas (seulement des informations d'avertissement ou d'erreur de sortie) # info, console, quotidiennement = Debuglog4j.logger.com.itzixi.mapper = debuglog4j.appender.console = org.apache.log4j.consoleAppenderLog4j.appender.console.encoding = UTF-8LOG4J.APPENDER.CONSOLE.LAYOUT = ORG.APACHE.LOG4J.PATTERNLAYOUTLOG4J.APPEND HH: MM: SS, SS} [% T] [% L] - [% P]% M% N # MYBATIS Affiche la configuration du journal des instructions SQL # log4j.logger.org.mybatis = debug # log4j.logger.com.itzixi.mapper = Debug # Croll régulièrement les fichiers logarithmiques et générer les journaux générés chaque jour log4j.appender.dailyfile = org.apache.log4j.dailyrollingFileAppenderLog4j.appendender.dailyfile.encoding = utf-8log4j.appender.dailyfile.threshold = info # TODO ADRESS LOC LOC # log4j.appender.dailyfile.file = c: /logs/itzixi-web/log.log4jlog4j.appender.dailyfile.file=/itzixi-disk1/logs/itzixi-web/log.log4jlog4j.apprender.dailyfile .DatePattern = '. HH: MM: SS, SS} [% T] [% L] - [% P]% M% N ## Afficher la déclaration SQL pièce # log4j.logger.com.ibatis = debug # log4j.logger.com.ibatis.common.jdbc.simpledatasource = debug # log4j.logger.com.ibatis.common.jdbc.scriptrunner = debug # log4j..com. .ibatis.sqlmap.engine.impl.sqlmapClientDelegate = Debug # log4j.logger.java.sql.connection = DEBUG # log4j.logger.java.sql.statement = debug # log4j.logger.java.sql.paretement = Debug
Comme le montre la figure, lorsque nous entrons dans le débogage, l'instruction SQL est imprimée.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.