有,但是有点模糊。使用SLF4J和Log4J引用修复的liquibase日志记录:
有 简单的方法 ,通过在依赖下降:
<!-- 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>
现在,前两个是您的日常日志记录框架(slf4j
api和log4j实现)。这些是您对标准log4j依赖项的补充,因为它们所做的只是路由到物理日志记录框架。没有log4j / logback /
etc。本身,他们仍然无法路由任何内容。
然而,最后一个有趣,因为它在liquibase将扫描
Logger实现的特定程序包中提供了单个类。它是由Matt
Bertolini开源的,因此您可以在GitHub上找到它。
如果您想自己做,还有The Hard Way:
package liquibase.ext.logging; // this is *very* importantimport liquibase.changelog.ChangeSet;import liquibase.changelog.DatabaseChangeLog;import liquibase.logging.core.AbstractLogger;import org.slf4j.Logger;import org.slf4j.LoggerFactory;public class LiquibaseLogger extends AbstractLogger { private static final Logger LOGGER = LoggerFactory.getLogger(LiquibaseLogger.class); private String name = ""; @Override public void setName(String name) { this.name = name; } @Override public void severe(String message) { LOGGER.error("{} {}", name, message); } @Override public void severe(String message, Throwable e) { LOGGER.error("{} {}", name, message, e); } @Override public void warning(String message) { LOGGER.warn("{} {}", name, message); } @Override public void warning(String message, Throwable e) { LOGGER.warn("{} {}", name, message, e); } @Override public void info(String message) { LOGGER.info("{} {}", name, message); } @Override public void info(String message, Throwable e) { LOGGER.info("{} {}", name, message, e); } @Override public void debug(String message) { LOGGER.debug("{} {}", name, message); } @Override public void debug(String message, Throwable e) { LOGGER.debug("{} {}", message, e); } @Override public void setLogLevel(String logLevel, String logFile) { } @Override public void setChangeLog(DatabaseChangeLog databaseChangeLog) { } @Override public void setChangeSet(ChangeSet changeSet) { } @Override public int getPriority() { return Integer.MAX_VALUE; }}此实现有效,但仅应作为示例。例如,我不是在使用Liquibase的名称来进行日志记录,而是使用此类
Logger本身。Matt的版本也执行一些
null 检查,因此这可能是使用起来更成熟的实现,而且它是开源的。



