Warum SQL auf der Konsole ausgeben?
Natürlich dient es zur Bequemlichkeit der Entwicklung und des Debuggens.
Wenn es ein Problem mit einem Datenbankbetrieb gibt, können wir das Problem basierend auf der Ausgabe-SQL-Anweisung schnell beheben.
Ausgabeinformationen:
[org.mybatis.spring.sqlSessionutils]-Erstellen einer neuen SQLSession
[org.mybatis.spring.sqlSessionutils] -sqlSession [org.apache.ibatis.session.defaults.defaultsqlSession@33290f98] war nicht für die Synchronisierung registriert, da die Synchronisation nicht aktiv ist
[org.springframework.jdbc.datasource.datasourceutils] -Fetching JDBC-Verbindung von DataSource
[org.mybatis.spring.transaction.springManagedtransaction] -jdbc Connection [JDBC: MySQL: //rds.aliyuncs.com: 3306/Yyyy? UseUnicode = True & Charaktercoding = Utf-8 & Zerodatimebehavior = convertonend, converttonend, convertonend, convertonend, Zerodatetimebehavior, convertonend, convertonend, convertonend, zerodatetimebehavior, [email protected], MySQL Connector Java] wird nicht nach Frühling verwaltet
[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 Yecyal Y auf x.physiker_id = y.id und (x.`date`> =? und X.`date` <=?) Wo 1 = 1 und y.clinic_id =? Bestellung von X.Date ASC
[DatEnumber.pageSelect]-==> Parameter: 2017-3-28 (String), 2017-4-4 (String), 1 (lang)
[DatEnumber.pageSelect]-<== Gesamt: 19
Der Ausgangsinhalt ist ziemlich schrecklich. Die Datenbankverbindungszeichen, der Benutzername und das Kennwort werden ausgegeben. Seien Sie also vorsichtig.
Eines ist jedoch schlecht, dass SQL -Anweisungen und Parameter separat ausgegeben werden. Wenn Sie sie zum Debuggen in das Abfragetool kopieren möchten, müssen Sie die Parameter selbst ausfüllen, was problematischer ist.
Meine Projektumgebung
Feder 4.0.2 + Feder MVC 4.0.2 + mybatis 3.2.6
Methode 1: Verwenden Sie die Standardprotokollausgabe
Diese Methode ist relativ einfach. Sie müssen nur die Konfigurationsdatei von myBatis mit relevanten Eigenschaften konfigurieren und keine log4j.properties -Datei einstellen.
<? value = "stdout_logging"/> </Einstellungen> </configuration>
Schlüsselaussagen:
<Einstellung name = "logImpl" value = "stdout_logging"/>
Gibt an, welche Protokollierungsimplementierung myBatis verwenden sollte. Wenn diese Einstellung nicht vorhanden ist, werden Protokollierungsimplementierungen automatisch entdeckt.
Methode 2: Verwenden Sie log4J -Protokollausgabe
1. Die feder-mybatis.xml-Datei muss nicht geändert werden.
2. Geben Sie in mybatis.xml an, log4j als Protokollimplementierung zu verwenden, die ich nicht tatsächlich testen muss.
<? value = "log4j"/> </Einstellungen> </configuration> <!-Tatsächlich können Sie testen, ob diese Datei verfügbar ist->
Die Wertwerte hier können SLF4J, Apache Commons -Protokollierung, Log4j2, Log4j, JDK -Protokollierung (außer log4j2, log4j, andere nicht überprüft) sein und werden in der Reihenfolge durchsucht.
3. Konfigurieren ist auch in web.xml erforderlich
<Hörer> <Hörer-Klasse> org.springframework.web.util.log4jconfiglistener </listener-class> </listener>
Oder Folgendes verwenden (nicht getestet)
<Hörer> <Hörer-Klasse> org.apache.logging.log4j.web.log4jservletContextListener </Listener-Klasse> </Listener>
4. Konfigurieren Sie schließlich log4j.properties
### LOG4J -Konfiguration #### ### In Kombination mit Spring müssen Sie diesen Dateispeicherort in web.xml angeben und einen Hörer hinzufügen #---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- log4j.appender.console.threshold = debug ##### Sie können das Protokollausgangsformat flexibel angeben. Die folgende Zeile gibt das spezifische Format an. « log4j.appender.console.layout.ConversionPattern = [%c]-%m%n #---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Erreicht die angegebene Größe, eine neue Datei wird log4j.appender.file = org.apache.log4j.rollingFileAppender #log -Dateiausgabeverzeichnis log4j.appender.file.file = log/tibet.log.log#10MB######################n. log4j.appender.file.threshold = Fehler log4j.appender.file.layout = org.apache.log4j.patternLayout log4j.appender.file #. --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------— Anzeigen sql Anweisung Teil log4j.logger.org.mybatis = debug #log4j.logger.cn.tibet.cas.dao = debug #log4j.logger.org.mybatis.common.jdbc.simpledatasource = #log4j.logger.org.mybatis.common.jdbc.scriptrunner = debug #log4j.logger.org.mybatis.sqlmap.engine.impl.sqlmapclientdelegate = Debug #log4j.logger.java.sql.con.connection = Debug log4j.logger.java.sql = debug log4j.logger.java.sql.statement = debug log4j.logger.java.sql.resultset = debug log4j.logger.java.sql.preparedStatement = debugement = debugement = debugement = debugement = debugement = debugement = debugement
Vergleich der beiden Wege
1. Die Konfiguration mit Standardprotokollausgabe ist einfach, während die Konfiguration mit Log4J -Protokollausgabe relativ komplex ist.
2. Log4j hat leistungsstarke Funktionen und relativ feine Kontrollkörnchen;
Welche Protokollimplementierung wird tatsächlich verwendet, wenn in der Konfigurationsdatei als "stdout_logging" angegeben ist? Apache Commons Protokollierung oder JDK -Protokollierung?
Keiner von ihnen ist tatsächlich system.out.pringln.
Aktualisiert am 2017-09-14
Einige Freunde haben berichtet, dass sie nach Konfiguration der zweiten Methode keine SQL -Anweisungen ausgeben. Bitte beachten Sie, dass in der Datei log4j.properties:
log4j.appender.console.threshold = debug
Stimmt es mit diesem Beispiel überein?
Bitte achten Sie auf die Details. Freunde, die gerade erst anfangen zu studieren, können zuerst die in diesem Beispiel bereitgestellte Konfiguration verwenden und sie dann auf persönliche Weise anpassen.
Darüber hinaus werde ich gemäß der obigen Konfiguration eine große Anzahl von Informationen außerhalb von SQL -Anweisungen ausgeben. Ein Freund versuchte, nur SQL -Anweisungen, Parameter und Ergebnisse auszugeben.
Vielen Dank hier und teilen Sie mit Ihnen:
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.