Gibt es Der Einfache Weg, durch fallenlassen in eine Abhängigkeit:
<!-- your own standard logging dependencies --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.5</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><!-- or log4j2 or logback or whatever--><version>1.7.5</version></dependency><!-- special dependency to fix liquibase's logging fetish --><dependency><groupId>com.mattbertolini</groupId><artifactId>liquibase-slf4j</artifactId><version>1.2.1</version></dependency>
Nun die ersten beiden sind deine täglichen logging-frameworks (slf4j-api und log4j-Implementierung). Diese sind zusätzlich zu Ihrem standard-log4j-dependency, als alles, was Sie tun, ist die route auf die physische logging-framework. Ohne log4j/logback/etc. selbst, Sie kann immer noch keine route nichts.
Der Letzte, jedoch, ist interessant, da es die einzige Klasse in einem bestimmten Paket, die liquibase scan Logger Implementierungen. Es ist open source, von Matt Bertolini, so können Sie finden Sie auf GitHub.
Wenn Sie wollen, dies selbst zu tun, es gibt auch Der Harte Weg:
Diese Implementierung funktioniert, sollte aber nur als Beispiel verwendet. Zum Beispiel, ich bin nicht mit Liquibase Namen zu erfordern eine Anmeldung, aber dieses Logger Klasse selbst statt. Matt ' s Versionen hat einige null-Prüfungen als gut, so dass das wohl eine reifere Umsetzung zu verwenden, außerdem ist es open source.
Beachten Sie, dass diese zusätzliche liquibase-slf4j Abhängigkeit scheint zu funktionieren für mich nur mit Liquibase 3.4.1. Wenn ich 3.4.0 oder 3.4.2 oder 3.5.3 es einfach kehrt zurück zu seiner eigenen seltsamen Protokollierung.
Ich bin mir nicht sehr sicher über Ihre Anforderung aber was ich verstehe ist, dass Sie wollen, protokolliert alle liquibase-log mit SLF4J-API. Wenn ich Recht habe, dann denke ich, können Sie in der Lage, es zu tun.
Zuerst fügen Sie die folgende Abhängigkeit in Ihrer pom.xml Datei :
und in Ihr logback.xml Datei Hinzufügen-logger für liquibase-und set-EBENE wie pro Ihre Anforderung.
<logger name="liquibase" level="DEBUG"/>
Das wird nicht funktionieren mit liquibase, da er keine seiner eigenen Klasse zu Scannen und erfordert eine spezielle interface-Implementierung in einem spezifischen Paket. Siehe die andere Antwort für weitere Informationen.
Ich habe geändert meine obige Antwort. Bitte überprüfen. Ich habe Hinzugefügt-Abhängigkeit für die Protokollierung liquibase-Protokolle. <Abhängigkeit> <groupId>com.mattbertolini</groupId> <artifactId>liquibase-slf4j</artifactId> <version>1.2.1</version> </Abhängigkeit>
Du hast nicht gelesen, die akzeptierten Antworten, ich denke mal, weil das schon angedeutet die gleiche Lösung.
Hier ist mein Rezept, um liquibase 3.5.3 log-in-Datei unter windows beim ausführen von der Kommandozeile aus.
Ist es nicht genau das "slf4j", aber löst das problem des Erhaltens der log-Dateien von db-updates, indem Sie liquibase Verwendung von java.util.die Protokollierung.
2) stellen Sie es auf %LIQUIBASE_HOME%/lib-Verzeichnis
3) erstellen logger.Eigenschaften-Datei mit dem folgenden Inhalt:
handlers=java.util.logging.FileHandler, java.util.logging.ConsoleHandler.level=FINEST
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.FileHandler.pattern=liquibase.log
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.FileHandler.append=true#2018-04-2817:29:44 INFO Example logging record
java.util.logging.SimpleFormatter.format=%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS %4$s %5$s%6$s%n
4) fügen Sie die java-option zu liquibase (zum Beispiel über set JAVA_OPTS=...):
-Djava.util.logging.config.file=logger.properties
Beispiel meiner liquibase-wrapper-batch-Datei :
set username=%USER%
set password="%PASSWORD%"
set URL="jdbc:db2://mydbserver:50000/MYDB"
set JAVA_OPTS=-Djava.util.logging.config.file=db2/logger.properties
call liquibase.bat ^--driver="com.ibm.db2.jcc.DB2Driver"^--defaultSchemaName=MYSCHEMA ^--liquibaseSchemaName=MYSCHEMA ^--changeLogFile=db2/changelog.xml ^--url=%URL%^--username=%USER%^--password="%PASSWORD%"^--logLevel=debug
UPDATE:
Habe ich eingeschaltet, um neue liquibase-version, die mit logback standardmäßig.
Für liquibase 3.6.2 verwenden Sie die folgende setup ausführen von der windows-Kommandozeile:
1) stellen Sie Sicher slfj erreichbar ist, in java-classpath.
Setzen Sie die slf4j-api-1.7.25.jar in liquibase/lib-Ordner.
Die jar-Datei finden Sie in der offiziellen slfj Verteilung Paket: https://www.slf4j.org/download.html
Es ist, aber es ist ein wenig unklar. Zitieren Befestigung liquibase-logging mit SLF4J und Log4J:
Gibt es Der Einfache Weg, durch fallenlassen in eine Abhängigkeit:
Nun die ersten beiden sind deine täglichen logging-frameworks (slf4j-api und log4j-Implementierung). Diese sind zusätzlich zu Ihrem standard-log4j-dependency, als alles, was Sie tun, ist die route auf die physische logging-framework. Ohne log4j/logback/etc. selbst, Sie kann immer noch keine route nichts.
Der Letzte, jedoch, ist interessant, da es die einzige Klasse in einem bestimmten Paket, die liquibase scan
Logger
Implementierungen. Es ist open source, von Matt Bertolini, so können Sie finden Sie auf GitHub.Wenn Sie wollen, dies selbst zu tun, es gibt auch Der Harte Weg:
Diese Implementierung funktioniert, sollte aber nur als Beispiel verwendet. Zum Beispiel, ich bin nicht mit Liquibase Namen zu erfordern eine Anmeldung, aber dieses
Logger
Klasse selbst statt. Matt ' s Versionen hat einige null-Prüfungen als gut, so dass das wohl eine reifere Umsetzung zu verwenden, außerdem ist es open source.liquibase-slf4j
Abhängigkeit scheint zu funktionieren für mich nur mit Liquibase3.4.1
. Wenn ich3.4.0
oder3.4.2
oder3.5.3
es einfach kehrt zurück zu seiner eigenen seltsamen Protokollierung.Ich bin mir nicht sehr sicher über Ihre Anforderung aber was ich verstehe ist, dass Sie wollen, protokolliert alle liquibase-log mit SLF4J-API. Wenn ich Recht habe, dann denke ich, können Sie in der Lage, es zu tun.
Zuerst fügen Sie die folgende Abhängigkeit in Ihrer pom.xml Datei :
und in Ihr logback.xml Datei Hinzufügen-logger für liquibase-und set-EBENE wie pro Ihre Anforderung.
Hier ist mein Rezept, um liquibase 3.5.3 log-in-Datei unter windows beim ausführen von der Kommandozeile aus.
Ist es nicht genau das "slf4j", aber löst das problem des Erhaltens der log-Dateien von db-updates, indem Sie liquibase Verwendung von java.util.die Protokollierung.
1) Holen Sie sich die liquibase-javalogger-3.0.jar von hier aus
https://github.com/liquibase/liquibase-javalogger/releases/
2) stellen Sie es auf %LIQUIBASE_HOME%/lib-Verzeichnis
3) erstellen logger.Eigenschaften-Datei mit dem folgenden Inhalt:
4) fügen Sie die java-option zu liquibase (zum Beispiel über set JAVA_OPTS=...):
Beispiel meiner liquibase-wrapper-batch-Datei :
UPDATE:
Habe ich eingeschaltet, um neue liquibase-version, die mit logback standardmäßig.
Für liquibase 3.6.2 verwenden Sie die folgende setup ausführen von der windows-Kommandozeile:
1) stellen Sie Sicher slfj erreichbar ist, in java-classpath.
Setzen Sie die slf4j-api-1.7.25.jar in liquibase/lib-Ordner.
Die jar-Datei finden Sie in der offiziellen slfj Verteilung Paket:
https://www.slf4j.org/download.html
2) logback Konfigurationsdatei path-parameter:
3) Hinzufügen logback.xml Konfigurations-Datei.
Beispiel ist hier:
https://www.mkyong.com/logging/logback-xml-example/
Versuchte ich das gleiche in meiner Anwendung, und wie es scheint ist in Ordnung. Ich kann sehen, die liquibase-log-in meine log-Datei.