如何在日志文件中记录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