log4j日志文件名与行号显示乱码? 问号? 参数问号? 日志问号?【转】【补】

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