Ich verwende den Ruhezustand 3 und möchte verhindern, dass alle Startmeldungen an die Konsole gesendet werden. Ich habe versucht, die Standardzeilen in log4j.properties zu kommentieren, aber kein Glück. Ich habe meine Protokolldatei unten eingefügt. Außerdem verwende ich Eclipse mit der Standardprojektstruktur und habe eine Kopie von log4j.properties sowohl im Stammverzeichnis des Projektordners als auch im Ordner bin.
### direkte Protokollnachrichten an stdout ### # log4j.appender.stdout = org.apache.log4j.ConsoleAppender # log4j.appender.stdout.Target = System.out # log4j.appender.stdout.layout = org.apache.log4j.PatternLayout # log4j.appender.stdout.layout.ConversionPattern =% d {ABSOLUT}% 5p% c {1}:% L -% m% n ### direkte Nachrichten an die Datei hibernate.log ### log4j.appender.file = org.apache.log4j.FileAppender log4j.appender.file.File = hibernate.log log4j.appender.file.layout = org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern =% d {ABSOLUTE% 5p% c {1}:% L -% m% n ### Protokollstufen festlegen - für eine ausführlichere Protokollierung ändern Sie 'info' in 'debug' ### log4j.rootLogger = warn, stdout # log4j.logger.org.hibernate = info log4j.logger.org.hibernate = Debug ### HQL-Abfrage-Parser-Aktivität protokollieren # log4j.logger.org.hibernate.hql.ast.AST = debug ### protokolliere nur die SQL # log4j.logger.org.hibernate.SQL = Debug ### log JDBC-Bindungsparameter ### log4j.logger.org.hibernate.type = info # log4j.logger.org.hibernate.type = debug ### Protokollschema exportieren / aktualisieren ### log4j.logger.org.hibernate.tool.hbm2ddl = debug ### log HQL-Analysebäume # log4j.logger.org.hibernate.hql = debuggen ### Cache-Aktivität protokollieren ### # log4j.logger.org.hibernate.cache = debug ### Protokolltransaktionsaktivität # log4j.logger.org.hibernate.transaction = debug ### Protokoll JDBC-Ressourcenerfassung # log4j.logger.org.hibernate.jdbc = debug ### Aktivieren Sie die folgende Zeile, wenn Sie die Verbindung aufspüren möchten ### ### Leckagen bei Verwendung von DriverManagerConnectionProvider ### # log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider = trac5
Antworten:
Versuchen Sie, eine vernünftigere Protokollierungsstufe festzulegen. Wenn Sie die Protokollierungsstufe auf
info
festlegen, werden nur Protokollereignisse aufinfo
oder einer höheren Ebene (warn
,error
undfatal
) protokolliert, dhdebug
Protokollierungsereignisse werden ignoriert.oder in der XML-Version der log4j-Konfigurationsdatei:
Siehe auch log4j Handbuch .
quelle
System.out.println()
Anrufe.Wichtiger Hinweis: Die Eigenschaft (Teil der Konfiguration im Ruhezustand, NICHT Teil der Konfiguration des Protokollierungsframeworks!)
steuert die Protokollierung direkt in STDOUT unter Umgehung eines Protokollierungsframeworks (was Sie an der fehlenden Ausgabeformatierung der Nachrichten erkennen können). Wenn Sie ein Logging - Framework wie log4j verwenden, sollten Sie immer diese Eigenschaft auf false gesetzt , weil es Ihnen keinen Nutzen überhaupt gibt.
Dieser Umstand irritierte mich ziemlich lange, weil ich mich nie wirklich darum kümmerte, bis ich versuchte, einen Benchmark in Bezug auf den Ruhezustand zu schreiben.
quelle
hibernate.xml
Konfiguration für den Ruhezustand (dh ) im Gegensatz zu meiner Protokollierungskonfiguration festlegen. Danke für den Zeiger!Ausführen:
bevor die Initialisierung des Ruhezustands für mich funktionierte.
Hinweis: In der obigen Zeile wird jede Abmeldung deaktiviert (
Level.OFF
). Wenn Sie weniger streng sein möchten, können Sie verwendendas ist still genug. (Oder überprüfen Sie die
java.util.logging.Level
Klasse für weitere Ebenen).quelle
Sie können die vielen Ausgänge des Ruhezustands deaktivieren, indem Sie diese Requisiten für den Ruhezustand (hb-Konfiguration) auf false setzen:
Wenn Sie jedoch alle Konsoleninformationen deaktivieren möchten, müssen Sie die Logger-Ebene auf NONE of FATAL der Klasse einstellen,
org.hibernate
wie Juha sagt.quelle
Ich habe es endlich herausgefunden, weil der Ruhezustand jetzt die slf4j-Protokollfassade verwendet. Um eine Brücke zu log4j zu schlagen, müssen Sie log4j- und slf4j-log4j12-Jars in Ihre Bibliothek einfügen, und dann übernehmen die log4j-Eigenschaften die Kontrolle über die Ruhezustandsprotokolle.
Meine pom.xml-Einstellung sieht wie folgt aus:
quelle
-Dorg.jboss.logging.provider=slf4j
Ihren VM-Optionen hinzufügen . Ich schrieb einen Artikel zum Thema: medium.com/@scadge/how-to-enable-hibernate-logging-dc11545efd3dZum Deaktivieren der
Hibernate:select
Nachricht im Protokoll können Sie die Eigenschaft wie folgt festlegenHibernateJpaVendorAdapter
:quelle
Für diejenigen, die keine eleganten Lösungen wollen, nur eine schnelle und schmutzige Möglichkeit, diese Nachrichten zu stoppen, ist hier eine Lösung, die für mich funktioniert hat (ich verwende Hibernate 4.3.6 und Eclipse und keine Antworten oben (oder im Internet gefunden)). funktioniert; weder log4j-Konfigurationsdateien noch programmgesteuertes Einstellen der Protokollierungsstufe)
Ich habe es in einem Tutorial-Programm verwendet, das von dieser Site heruntergeladen wurde
quelle
Als erstes müssen Sie herausfinden, welches Protokollierungsframework tatsächlich verwendet wird.
Viele Frameworks werden bereits von anderen Autoren oben behandelt. Wenn Sie Logback verwenden, können Sie das Problem lösen, indem Sie diese logback.xml zu Ihrem Klassenpfad hinzufügen :
Weitere Informationen: Logback Manual-Konfiguration
quelle
Ich habe das "Debug" in "Info" geändert und es hat funktioniert. Folgendes habe ich getan:
Vor:
Nach dem:
quelle
Ersetzen Sie slf4j-jdk14-xxx.jar durch slf4j-log4j12-xxx.jar. Wenn Sie beide haben, löschen Sie slf4j-jdk14-xxx.jar. Diese Lösung finden Sie unter https://forum.hibernate.org/viewtopic.php?f=1&t=999623
quelle
log4j.properties
Konfiguration verwenden.log4j.logger.org.hibernate=OFF
Versuchen Sie dies, um die Logger-Ausgabe in der Konsole zu entfernen.
Diese Anweisungen deaktivierten alle Konsolenausgaben von Logger.
quelle
Es gibt verschiedene Teile der Ruhezustandsprotokollierung, die Sie basierend auf der Protokollierungshierarchie des Ruhezustandspakets steuern können (mehr zur Protokollierungshierarchie hier ).
Das obige wurde von hier genommen .
Außerdem könnten Sie die Eigenschaft
show-sql:true
in Ihrer Konfigurationsdatei haben, da dies die Einstellungen des Protokollierungsframeworks ersetzt. Mehr dazu hier .quelle
Ich konnte aufhören, indem ich diese 2 Zeilen hinzufügte
Unten sehen meine log4j.properties aus. Ich hinterlasse nur einige kommentierte Zeilen, in denen die Protokollstufe erläutert wird
quelle