[英]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.