Java 使用via.jar文件时,Log4j不显示行日志记录
我有一个使用jar文件的程序,它使用log4j。 它的log4j属性包含以下模式:Java 使用via.jar文件时,Log4j不显示行日志记录,java,ant,jar,log4j,Java,Ant,Jar,Log4j,我有一个使用jar文件的程序,它使用log4j。 它的log4j属性包含以下模式: [%-5p] (%d) %l : %m%n 当我的程序访问jar中执行日志的方法时,它会产生以下结果: [INFO ] (2011-02-25 14:13:43,426) org.fractor.service.AppConfigService.getStringValueOf(?:?) : processing.user: root 我试图包含jar文件的原始src文件夹,当我再次运行该程序时,它会输出以下
[%-5p] (%d) %l : %m%n
当我的程序访问jar中执行日志的方法时,它会产生以下结果:
[INFO ] (2011-02-25 14:13:43,426) org.fractor.service.AppConfigService.getStringValueOf(?:?) : processing.user: root
我试图包含jar文件的原始src文件夹,当我再次运行该程序时,它会输出以下内容:
[INFO ] (2011-02-25 14:13:43,426) org.fractor.service.AppConfigService.getStringValueOf(AppConfigService.java:125) : processing.user: root
这看起来还可以,但是当创建包含使用log4j的jar的程序的jar文件时,它不包括jar的src文件夹,因此给出了错误
是因为它只是引用了jar的src文件夹吗?我需要在jar中包含jar的src文件夹吗?现在看来使用这个罐子是没有用的
还有别的办法吗?谢谢。听起来jar文件包含的类是在没有调试信息的情况下编译的
正如你所发现的,这是非常可取的。我建议您向负责构建jar的人员提交一个bug,如果可以的话,您可以自己重新构建它。如果没有,则包括src文件夹,但正确的jar更好。您需要编译启用调试的Java类。在ant中,这将如下所示:
<javac destdir="XXXX" source="1.5" target="1.5" debug="true" encoding="UTF-8">
直接使用javac需要指定-g。参见。+1 Java的传统是总是在编译时打开调试符号(例如javac-g)。2010年6月,我分析了Maven2中央存储库中的每个jar文件(包括jar中的jar!),我所查看的类中有95%以上的类启用了调试符号。正如托比约恩·拉文·安徒生所说,让制造罐子的人打开调试!(例如,在build.xml中)。@Julius,我的经验越丰富,我就越理解Java设计人员牢记调试工具堆栈跟踪的重要性。记录位置慢是文档中的一句老话,这是因为信息来自引发异常和分析其堆栈跟踪。那次行动过去比现在慢得多。