以下配置
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
<encoder>
<pattern>%d{HH:mm:ss.SSS} %C{0}: %msg%n</pattern>
</encoder>
</appender>
<root level="debug">
<appender-ref ref="STDOUT" />
</root>
</configuration>
和以下代码
package tests;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Runner {
private static final Logger log = LoggerFactory.getLogger(Runner.class);
public static void main(String[] args) {
new Runner().new Parent().hello();
new Runner().new Child().hello();
}
public class Parent {
public void hello() {
log.info("Hello from " + getClass().getSimpleName());
}
}
public class Child extends Parent{
}
}
输出
20:42:13.811 Runner$Parent: Hello from Parent
20:42:13.814 Runner$Parent: Hello from Child
这意味着
%C{0}
输出的内容与this.getClass().getSimpleName()
不同。是否可以使用logback模式输出与后者相同的输出?
最佳答案
在logback配置文件中,使用转换说明符:%class {0}输出类名。例:<pattern>%d %-5level %class{0}: %msg%n</pattern>
否则,尝试使用%logger{0}
来使用Logger简单名称,并为每个类使用所需的记录器。