【问题标题】: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>
      

      【讨论】:

        猜你喜欢
        • 2018-07-17
        • 1970-01-01
        • 2017-11-17
        • 1970-01-01
        • 2014-08-02
        • 1970-01-01
        • 1970-01-01
        • 2018-04-16
        • 2021-04-07
        相关资源
        最近更新 更多