我有一个班级,我已经创建了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
}
}
奇怪的是,即使在调试级别配置了x.y.z.MyClass,MyClass-a和MyClass-b记录器也没有在调试级别进行日志记录,而是记录配置的根级别(在我的情况下为info)。即使为-a和-b指定特定记录器,如下所示也不起作用。在将root更改为debug之前,它们不会记录调试级别。真的难过这个,任何想法?
<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>
答案 0 :(得分: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