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

标签 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 模式输出与后者相同的输出?

最佳答案

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

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

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

关于java - 如何使用logback打印当前类名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26592541/

相关文章:

java - 在 dispose() libgdx 中重置变量

java - 从数据库加载 jar 并将其设置在类路径中

jndi - Logback 找不到外部属性文件资源

json - 如何将logstash logback encoder 的一些方法封装到一个内部字段中?

德尔福7 : how to generate class hierarchy?

java - 枚举的 values() 方法访问级别

java - Q : Solve almostIncreasingSequence in Java (Codefights)

grails - 在Grails 3.1.x中,如何配置grails日志记录以在日志记录语句中包含类名?

php - PHP 的对象浏览器