2

我有一堂课,我在其中创建了 3 个不同的 slf4j 记录器:

package x.y.z;

public class MyClass {
    private static final Logger logger1 = LoggerFactory.getLogger(MyClass.class);
    private static final Logger logger2 = LoggerFactory.getLogger(MyClass.class + "-a);
    private static final Logger logger3 = LoggerFactory.getLogger(MyClass.class + "-b);

    public void myMethod() {
         // some code that logs to all loggers at debug level
    }
}

奇怪的是,即使在调试级别配置了 xyzMyClass,MyClass-a 和 MyClass-b 记录器也不会在调试级别进行日志记录,而是在配置的根级别进行日志记录(在我的情况下为信息)。即使为 -a 和 -b 指定特定的记录器,如下所示,也不起作用。在我将根目录更改为调试之前,他们不会在调试级别登录。真的被这个难住了,有什么想法吗?

<configuration scan="true" scanPeriod="30 seconds">

  <appender name="FILE" class="ch.qos.logback.core.FileAppender">
   ....
  </appender>

  <logger name="x.y.z.MyClass" level="DEBUG" />
  <logger name="x.y.z.MyClass-a" level="DEBUG" />
  <logger name="x.y.z.MyClass-b" level="DEBUG" />

  <root>
    <level value="info" />
    <appender-ref ref="FILE" />
  </root>
</configuration>
4

1 回答 1

1

由于您在日志配置中提到了错误的类名。

<logger name="x.y.z.MyClass" level="DEBUG" />肯定是
<logger name="x.y.z.myClass" level="DEBUG" />

更好地将您的类规范更改为public class MyClass { }

编辑:

尝试通过单独指定<logger name="x.y.z" level="DEBUG"/>等效 log4j 属性的包名称log4j.logger.x.y.z=DEBUG

于 2013-11-06T11:24:27.643 回答