首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Logback Logger没有插件

Logback Logger没有插件
EN

Stack Overflow用户
提问于 2019-02-06 16:27:33
回答 2查看 1.4K关注 0票数 0

我有一个使用slf4和logback。其中我使用的是控制台和DBAppender。如果我在Testcase中使用日志记录,一切都很好:

代码语言:javascript
复制
    @Test
    public void test() {
        Logger logger=  LoggerFactory.getLogger("TEST");
        logger.info("Teste");
}

但是如果我在Applikation中使用一个记录器,什么都不会发生。没有来自Logback的调试输出,也没有来自我的记录器调用的输出。

格莱德尔:

代码语言:javascript
复制
compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25'
compile group: 'ch.qos.logback', name: 'logback-core', version: '1.2.3'
compile group: 'ch.qos.logback', name: 'logback-classic', version: '1.2.3'

logback.xml:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<configuration debug ="true">
    <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
        <!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{5} - %msg%n
            </pattern>
        </encoder>
    </appender>
    <appender name="db" class="ch.qos.logback.classic.db.DBAppender">
        <connectionSource
                class="ch.qos.logback.core.db.DriverManagerConnectionSource">
            <driverClass>org.postgresql.Driver</driverClass>
            <url>jdbc:postgresql://localhost:5432/test</url>
            <user>postgres</user>
            <password></password> <!-- no password -->
        </connectionSource>
    </appender>

    <!-- the level of the root level is set to DEBUG by default. -->
    <root level="INFO">
        <appender-ref ref="stdout" />
        <appender-ref ref="db" />
    </root>
</configuration>

编辑:当我移除logback依赖项并添加

代码语言:javascript
复制
compile group: 'org.slf4j', name: 'slf4j-simple', version: '1.7.25'

一切正常,但遗憾的是,这不是一种选择,因为我需要dpAppender

EDIT2通过调试,我发现根本没有向记录器添加任何附加程序。在ch.qos.logback.classic的以下代码中:

代码语言:javascript
复制
public void callAppenders(ILoggingEvent event) {
    int writes = 0;
    for (Logger l = this; l != null; l = l.parent) {
        writes += l.appendLoopOnAppenders(event);
        if (!l.additive) {
            break;
        }
    }
    // No appenders in hierarchy
    if (writes == 0) {
        loggerContext.noAppenderDefinedWarning(this);
    }
}

private int appendLoopOnAppenders(ILoggingEvent event) {
    if (aai != null) {
        return aai.appendLoopOnAppenders(event);
    } else {
        return 0;
    }
}

aai的大小是0

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-15 08:06:44

缺少附录是由我用来执行应用程序的gradle vaadin插件造成的。当我用gretty替换了vaadin插件时,这个问题就解决了。

票数 0
EN

Stack Overflow用户

发布于 2019-04-23 10:34:26

您的记录器实例

代码语言:javascript
复制
Logger logger=  LoggerFactory.getLogger("TEST");

不引用任何现有的名为"TEST“的记录器。

我认为您应该在logback.xml中定义如下所示的记录器:

代码语言:javascript
复制
<logger name="webAppLogger" level="info">
    <appender-ref ref="stdout" />
    <appender-ref ref="db" />
</logger>

然后当您想在应用程序中使用记录器时引用它,如下所示:

代码语言:javascript
复制
Logger logger=  LoggerFactory.getLogger("webAppLogger");

现在,Logback应该使用在webAppLogger中定义的logback.xml。在这里,您还定义了webAppLogger使用两个已定义的附加程序"stdout“和"db”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54558253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档