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, console log4j.appender.console = org.apache.log4j.ConsoleAppender log4j.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>
log4j 行號與文件名打印問號 --http://www.blogjava.net/itspy/archive/2008/04/22/194686.html
Ant 的 javac標簽--https://blog.csdn.net/dy_paradise/article/details/5974856
maven編繹
如果用Maven編譯,就在<plugin>節點的<configurations>下添加<compilerArgs>節點如下:
<plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.6.0</version> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> <compilerArgs> <arg>-g</arg> </compilerArgs> </configuration> </plugin> </plugins>
log4j配置后行號亂碼顯示為?問號--http://www.cnblogs.com/zhangshiwen/p/6935248.htm
javac編繹
如果是用JAVAC編繹,那么直接加參數-g就可以了.
用法:javac <選項> <源文件>
其中,可能的選項包括:
-g 生成所有調試信息
-g:none 不生成任何調試信息
-g:{lines,vars,source} 只生成某些調試信息
-nowarn 不生成任何警告