如何使用logback打印当前类名?

Suz*_*ioc 3 java logback class-hierarchy

下面的配置

<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>
Run Code Online (Sandbox Code Playgroud)

和以下代码

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{

    }
}
Run Code Online (Sandbox Code Playgroud)

产出

20:42:13.811 Runner$Parent: Hello from Parent
20:42:13.814 Runner$Parent: Hello from Child
Run Code Online (Sandbox Code Playgroud)

这意味着%C{0}输出的东西不同于this.getClass().getSimpleName().

是否可以使用 logback 模式输出与后者相同的输出?

Man*_*ari 5

在 logback 配置文件中,使用转换说明符:%class{0}输出类名。例子:

<pattern>%d %-5level %class{0}: %msg%n</pattern>

否则,尝试使用 Logger 简单名称 by %logger{0},并为每个类使用所需的记录器。