Logback - 打印出调用 log 方法的方法名称

2022-09-03 04:29:53

在我的示例中,我有以下代码:

package com.example.somepackage;

public class Example {
    public static void main(String[] args) {
        org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger(Example.class);
        logger.info("Example message.");
    }
}

我希望它输出到控制台,就像这个最小的例子:

com.example.somepackage.Example.main Example message.

我唯一需要的是:

  • 要放入文件中的模式,或者logback.xml
  • 有关我需要添加到示例代码方案中的进一步代码的说明

如果使用额外的代码而不是 XML 配置模式,请同时提供有关如何配对这两者的信息,以便除了打印出的方法名称外,还可以使用时间、日志级别等模式。


答案 1

我想你正在寻找模式。请参阅 Logback 文档,了解您可以使用的所有模式。但请注意,这些文档还说:%M

生成方法名称不是特别快。因此,除非执行速度不是问题,否则应避免使用它。


答案 2

这是一个记录方法名称和行号的示例追加器:

 <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{HH:mm:ss.SSS} %green([%thread]) %highlight(%-5level) (%logger{50}.%M\(%line\)) - (%msg%n)
            </pattern>
        </encoder>
  </appender>

推荐