栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用SLF4J获取Liquibase进行日志记录?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用SLF4J获取Liquibase进行日志记录?

有,但是有点模糊。使用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 检查,因此这可能是使用起来更成熟的实现,而且它是开源的。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/414495.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号