如何在日誌文件中記錄jar文件的位置。 假設我正在打印來自myLog.jar中的LogTest.java的一些消息,有沒有什麼方法可以在日誌文件中打印如下。如何在日誌語句打印日誌中記錄日誌jar文件
INFO 2013-10-30 15:58:07,227 [log] (LogTest.java:235:myLog.jar) - Some Log Message
在傳統項目中的各種罐子含有一種類似日誌消息的具有相同的類名, 它是需要時間來調查任何問題。 有沒有辦法處理這個請給你的建議。
如何在日誌文件中記錄jar文件的位置。 假設我正在打印來自myLog.jar中的LogTest.java的一些消息,有沒有什麼方法可以在日誌文件中打印如下。如何在日誌語句打印日誌中記錄日誌jar文件
INFO 2013-10-30 15:58:07,227 [log] (LogTest.java:235:myLog.jar) - Some Log Message
在傳統項目中的各種罐子含有一種類似日誌消息的具有相同的類名, 它是需要時間來調查任何問題。 有沒有辦法處理這個請給你的建議。
無法將源文件與標準org.apache.log4j.PatternLayout
一起加入。但是,您可以創建自己的佈局以將其包含在源代碼中。以下可能有用。
public class MyLayout extends org.apache.log4j.Layout {
public void activateOptions() {
// None action
}
public String format(LoggingEvent event) {
StringBuilder sb = new StringBuilder();
sb.append(event.getLevel());
sb.append(" (");
sb.append(event.getLoggerName());
sb.append(":");
sb.append(event.getLocationInformation().getLineNumber());
sb.append(":");
sb.append(getSource(event.getLoggerName()));
sb.append(") - ");
sb.append(event.getMessage());
sb.append(LINE_SEP);
return sb.toString();
}
public boolean ignoresThrowable() {
return true;
}
public static String getSource(String className) {
try {
ClassLoader loader = MyLayout.class.getClassLoader();
String name = className.replace('.', '/').concat(".class");
URL url = loader.getResource(name);
return url.getPath();
} catch (Exception e) {
return null;
}
}
}
我能夠使用格式記錄語句,但它從MyLayout.java打印日誌位置,而不是從記錄語句的位置打印日誌位置。假設我在Test.java的第6行打印日誌,但我仍將Logger打印爲INFO(smsg.common.util.logger.MyLayout:227:/ C:/ Users/Myusr/workspace1/my-eclipse-prj /target/classes/smsg/common/util/logger/MyLayout.class) - Helllo寧可打印Test.java和行號。 – Azhar
是否將包名稱添加到日誌中以澄清它?或者多個罐子包含相同的包裝? – jalynn2
包名稱和類名稱(%C.%F)我已經嘗試過,但是我想從打印日誌的位置打印jar文件。 – Azhar