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

时间:2014-10-27 16:45:46

标签: 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>

和以下代码

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模式?

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

来自logback的布局配置页面已声明:

%C

%class

来自:Layouts