为什么配置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>
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>
但是为什么有一部分又可以呢
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
并且servlet-api.jar必须在Tomcat 5.0\common\lib中,否则无法启动
当加载servlet-api.jar时,会读取web.xml,并初始化里面的servlet,ActionServlet被加载,struts配置文件被加载,在加载这些配置文件时,struts会以log.trace级别打印日志,而这时log4j还没有被加载,所以按照默认级别all打印日志,至于为什么会打印src的行号,我本地是没有的,可能和log4j,tomcat等的版本有关
用法:javac <选项> <源文件>
其中,可能的选项包括:
-g 生成所有调试信息
-g:none 不生成任何调试信息
-g:{lines,vars,source} 只生成某些调试信息
%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 :输出产生该日志事件的线程名