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