簡體   English   中英

使用logback在日志中打印調用類名稱

[英]Printing calling class name in logs using 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]-人的數據-100001

您可以使用Thread.currentThread().getStackTrace()訪問當前的調用堆棧。 它返回一個StackTraceElement數組。 第一項始終代表getStackTrace() 第二個是調用它的方法,第三個是您想要的方法

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

返回調用該方法的類的類名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM