使用logback在日志中打印调用类名

时间:2014-04-14 12:10:00

标签: java logging log4j logback

我在记录调用类的类名时遇到问题。我有以logback编写的日志实用程序类。出于某些性能原因,我使用单例模式创建了记录器实用程序。但是当我从其他类调用日志语句时,我得到打印实用程序的类名而不是调用类。

private static LogUtil logutil =null;   
    public static LogUtil getInstance(){        
        if(logutil==null){
            logutil = new LogUtil();
        }
        return logutil;

    }
protected static final Logger LOGGER = (Logger)LoggerFactory.getLogger("MyModule");

public void info(String Message){
        if(LOGGER.isInfoEnabled()){
            LOGGER.info(Message);

        }
}

测试类就像

public class LogUtilTest {
public static void testforlogging(){
logutil.info(“Im Logging this message”);
}
}

我的输出如下打印LogUtil而不是LogUtilTest,我需要帮助记录我的调用类名称

  

2014-04-14 16:47:21 INFO [main] MyModule [LogUtil.info:42]班级名称   [com.commonutil.logging.LogUtil] - 方法[testforlogging] - 否   人的数据-1001

1 个答案:

答案 0 :(得分:0)

您可以使用Thread.currentThread().getStackTrace()访问当前的callstack。它返回一个StackTraceElement数组。第一项始终代表getStackTrace()。第二个是调用它的方法,第三个是你想要的方法

Thread.currentThread().getStackTrace()[2].getClassName()

返回调用该方法的类的类名。