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

时间:2013-06-19 11:31:49

标签: logging configuration junit logback

我正在使用Spring和SLF4J以及Logback。 使用自定义注释和BeanPostProcessor将记录器自动注入bean。

有没有办法在logback.xml中配置logger,以便它的名称是某种表达式?像Ant通配符之类的东西?这将有助于我专门为jUnit测试配置一个记录器。

我的目标是实现以下目标:

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

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

2 个答案:

答案 0 :(得分:1)

我认为默认情况下不可能。很难确定,因为logback文档的编写方式不容易快速查找内容。它写在一个,嘿你想使用logback,好吧如何阅读45分钟的方式。

无论如何,如果实现自定义LoggerFactory (实现 org.slf4j.ILoggerFactory )并告诉logback使用您的工厂,您可以这样做。

答案 1 :(得分:0)

此配置会禁止所有日志,但记录器名称包含“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>