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

Posted

技术标签:

【中文标题】Logback - 打印出调用 log 方法的方法名称【英文标题】:Logback - Print out method name that called the log method 【发布时间】:2015-11-02 01:25:27 【问题描述】:

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

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】:

我认为您正在寻找%M 模式。 见Logback docs 对于您可以使用的所有模式。 但是请注意,这些文档还说:

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

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于Logback - 打印出调用 log 方法的方法名称的主要内容,如果未能解决你的问题,请参考以下文章

log4j不输出日志

手机调试Android程序出异常时不打印堆栈信息

我的Android进阶之旅如何传递android的log日志打印方法给到底层算法c代码去调用?

我的Android进阶之旅如何传递android的log日志打印方法给到底层算法c代码去调用?

我的Android进阶之旅如何传递android的log日志打印方法给到底层算法c代码去调用?

为啥没有logback,却使用了logback打印日志