为什么配置log4j后,日志中本应该打印文件名行号的地方却变成了问号。
09/06 10:37:00,340 INFO  pbs.kernal.channel.comm.SocketChannel(Thread-10) [?:?] - :初始化成功!这与我打包成jar包运行有关吗
<appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{MM/dd HH:mm:ss,SSS} %-5p %c(%t) [%F:%L] - %x:%m%n"/>
</layout>
</appender>

解决方案 »

  1.   

    不要导入jar包,要调用调试模块的src
      

  2.   

    不能直接导入jar包来用吗
    但是为什么有一部分又可以呢
    09/06 16:43:44,159 INFO  org.apache.struts.util.PropertyMessageResources(main) [PropertyMessageResources.java:127] - :Initializing,
    config='org.apache.struts.util.LocalStrings', returnNull=true
      

  3.   

    Tomcat 5.0\common\lib加载顺序先于webapp
    并且servlet-api.jar必须在Tomcat 5.0\common\lib中,否则无法启动
    当加载servlet-api.jar时,会读取web.xml,并初始化里面的servlet,ActionServlet被加载,struts配置文件被加载,在加载这些配置文件时,struts会以log.trace级别打印日志,而这时log4j还没有被加载,所以按照默认级别all打印日志,至于为什么会打印src的行号,我本地是没有的,可能和log4j,tomcat等的版本有关
      

  4.   

    你是不是用的javac -g:none 来编译你的文件的????C:\Documents and Settings\aa>javac
    用法:javac <选项> <源文件>
    其中,可能的选项包括:
      -g                         生成所有调试信息
      -g:none                    不生成任何调试信息
      -g:{lines,vars,source}     只生成某些调试信息
      

  5.   

    我用的是weblogic8.1sp4在aix平台下,因为原先平台是由集成商提供留下的,最近在日志配置文件中加入[%F:%L]参数后,出现以上现象。
      

  6.   

    %c:输出日志信息所属的类的全名
    %d:输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy-MM-dd HH:mm:ss },输出类似:2002-10-18- 22:10:28
    %F :输出日志信息所属的类的类名
    %L :输出日志事件的发生位置,即输出日志信息的语句处于它所在的类的第几行(.java格式源文件)
    %m :输出代码中指定的信息,如log(message)中的message
    %n :输出一个回车换行符,Windows平台为“\r\n”,Unix平台为“\n”
    %p :输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL。如果是调用debug()输出的,则为DEBUG,依此类推
    %r :输出自应用启动到输出该日志信息所耗费的毫秒数
    %t :输出产生该日志事件的线程名