log4j本来设置了要打印行号与文件名的,结果有的能打印出来,有的却是乱码,查了些文档之后才发现,原来打印问题是因为编绎时没有编绎进去调试信息,所以没办法打印,好像有的系统又会显示(Unknown Source)
样例
错误样例
KingTool [2018-07-18 09:54:17,386]>>>INFO>>>[ com.kingtool.Student.study(?:?) ]-[student id 23 is studing Math]
正常样例
KingTool [2018-07-18 09:54:17,386]>>>INFO>>>[ com.kingtool.StudentService.study(StudentService.java:139) ]-[student id 23 is studing Math]
log4j.properties配置
log4j.rootLogger = WARN, consolelog4j.appender.console = org.apache.log4j.ConsoleAppenderlog4j.appender.console.layout = org.apache.log4j.PatternLayout#log4j.appender.console.layout.ConversionPattern = %-5p %d [%t] %c\: %m%n log4j.appender.console.layout.ConversionPattern = KingTool [%d{ yyyy-MM-dd HH:mm:ss,SSS}]>>>%p>>>[ %l ]-[%m] %x %n
ant编绎
如果用Ant编译,就在javac节点下添加debug="on"或debug="true"
<javac srcdir="src" destdir="bin" debug="on" > .....</javac>maven编绎
如果用Maven编译,就在<plugin>节点的<configurations>下添加<compilerArgs>节点如下:org.apache.maven.plugins maven-compiler-plugin 3.6.0
javac编绎
如果是用JAVAC编绎,那么直接加参数-g就可以了.
用法:javac <选项> <源文件>
其中,可能的选项包括: -g 生成所有调试信息 -g:none 不生成任何调试信息 -g:{lines,vars,source} 只生成某些调试信息 -nowarn 不生成任何警告