【问题标题】:Logback Logger name globbing for jUnit specific logger用于 jUnit 特定记录器的 Logback 记录器名称通配符
【发布时间】:2013-06-15 22:04:12
【问题描述】:
我正在使用带有 SLF4J 和 Logback 的 Spring。
Logger 使用自定义注解和BeanPostProcessor 自动注入到 bean 中。
有没有办法在 logback.xml 中配置记录器,以便它的名称是某种表达式?诸如 Ant 通配符之类的东西?这将帮助我专门为 jUnit 测试配置一个记录器。
我的目标是:
<logger name="my.package.**.*Test">
...
</logger>
我愿意接受更合适的解决方案。
【问题讨论】:
标签:
logging
configuration
junit
logback
【解决方案1】:
我认为默认情况下这是不可能的。很难确定,因为 logback 文档的编写方式不便于快速查找内容。它是写在一个,嘿,你想使用 logback,好吧好吧,阅读 45 分钟怎么样。
无论如何,如果您实现自定义 LoggerFactory(实现 org.slf4j.ILoggerFactory)并告诉 logback 使用您的工厂,您可能会这样做。
【解决方案2】:
此配置禁止所有日志,但记录器名称包含“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>