Logback的日志记录器名称通配符用于jUnit特定的日志记录器

3

我正在使用Spring,SLF4J和Logback。

使用自定义注释和BeanPostProcessor将Logger自动注入到bean中。

是否有一种方法可以在logback.xml中配置记录器,使其名称是某种表达式?类似于Ant通配符?这将帮助我为jUnit测试专门配置记录器。

我想要的是类似以下效果:

<logger name="my.package.**.*Test">
    ...
</logger>

我愿意接受更适合的解决方案。

2个回答

1
这个配置会抑制除了那些记录器名称包含“Test”的日志之外的所有日志。

<!-- Drops all logs except those from "Test" classes -->

<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">

    <filter class="ch.qos.logback.core.filter.EvaluatorFilter">
        <evaluator>
            <expression>return logger.contains("Test");</expression>
        </evaluator>
        <OnMismatch>DENY</OnMismatch>
        <OnMatch>ACCEPT</OnMatch>
    </filter>
</appender>

<root level="DEBUG">
    <appender-ref ref="STDOUT" />
</root>


1
我不相信这是默认情况。很难确定,因为logback文档的写作方式不方便快速查找信息。它是以“嘿,你想使用logback,好吧,读45分钟怎么样”的方式编写的。
无论如何,如果您实现一个自定义的LoggerFactory(实现org.slf4j.ILoggerFactory),并告诉logback使用您的工厂,那么您可能可以做到这一点。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接