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 不生成任何警告
原文地址:https://www.cnblogs.com/whatlonelytear/p/9328232.html