Log4J学习

 



蒙田说过一句像老子说的话:我们做事情需要工具,而为了验证工具有效我们又需要一些方法,为了验证方法有效我们又需要工具......

我在使用log4j的时候就陷入了这种困境

 

刚开始碰到的问题是eclipse+tomcat后错误信息无法在eclipse上显示,于是同事指点独立tomcat,可根据前一个bug,system.out.prinln的数据又无法显示,于是我又苦苦的学习log4j(请原谅我,我真的花了大量时间),后来又发现log4j的使用也出现了问题:在我使用了log4j后,很多jar里的信息也出来了,于是我又琢磨了怎么独立自己的log

 

再然后我发现一件诡异的事情,那就是我改了配置文件,却一直没有生效,我重启tomcat,eclipse,甚至重启了windows

后来才明白我的配置文件自相矛盾

log4j.logger.Qbit= DEBUG, debugfile
#log4j.additivity.Qbit = false
log4j.appender.debugfile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.debugfile.File = d:/logs/dubug.log
log4j.appender.debugfile.Append = true
#log4j.appender.debugfile.Threshold = DEBUG 
log4j.appender.debugfile.layout = org.apache.log4j.PatternLayout
log4j.appender.debugfile.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %p ] - [%l:%r ]  %m%n

log4j.logger.Qbit= warn, errinfo
#log4j.additivity.Qbit = false
log4j.appender.errinfo = org.apache.log4j.DailyRollingFileAppender
log4j.appender.errinfo.File = d:/logs/warn.log
log4j.appender.errinfo.Append = true
log4j.appender.errinfo.Threshold = warn 
log4j.appender.errinfo.layout = org.apache.log4j.PatternLayout
log4j.appender.errinfo.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %p ] - [%l:%r ]  %m%n

原意是想建立两个文件分别来存放debug和warn,结果二者矛盾,于是前面的(或者是更低级的?)debug被忽略了

正确的做法是去掉

 

log4j.logger.Qbit= warn, errinfo


 使用

log4j.appender.errinfo.Threshold = warn 


 

即可

后来还发现可以将多个类的信息输入到同一个文件,不过似乎没啥用

 

最后贴一个吧

 #该文件名需要为log4j.properties,在src目录下,需导入两个jar包(哪两个?亲,你懂的)
 
 ### set log levels ###
log4j.rootLogger = debug ,  stdout 

### 输出到控制台 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = %m%n

### 输出到日志文件 ###
log4j.logger.Qbit= DEBUG, debugfile
log4j.additivity.Qbit = false
log4j.appender.debugfile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.debugfile.File = d:/logs/Qbit/dubug.log
log4j.appender.debugfile.Append = true
log4j.appender.debugfile.Threshold = DEBUG 
log4j.appender.debugfile.layout = org.apache.log4j.PatternLayout
log4j.appender.debugfile.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %p ] - [%l:%r ]  %m%n


log4j.additivity.Kamputer = false
log4j.appender.debugfile = org.apache.log4j.DailyRollingFileAppender
log4j.appender.debugfile.File = d:/logs/Qbit/dubug.log
log4j.appender.debugfile.Append = true
log4j.appender.debugfile.Threshold = DEBUG 
log4j.appender.debugfile.layout = org.apache.log4j.PatternLayout
log4j.appender.debugfile.layout.ConversionPattern = %-d{yyyy-MM-dd HH:mm:ss} [ %p ] - [%l:%r ]  %m%n


#level:
#FATAL       0  
#ERROR      3  
#WARN       4  
#INFO         6  
#DEBUG      7 

#appender
#org.apache.log4j.ConsoleAppender(控制台),
#org.apache.log4j.FileAppender(文件),
#org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
#org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
#org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

#Layout
#org.apache.log4j.HTMLLayout(以HTML表格形式布局),
#org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
#org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
#org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息) 

#打印参数
#%m   输出代码中指定的消息
#%p   输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL 
#%r   输出自应用启动到输出该log信息耗费的毫秒数 
#%c   输出所属的类目,通常就是所在类的全名 
#%t   输出产生该日志事件的线程名 
#%n   输出一个回车换行符,Windows平台为“/r/n”,Unix平台为“/n” 
#%d   输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyy MMM dd HH:mm:ss , SSS},输出类似:2002年10月18日  22 : 10 : 28 , 921  
#%l   输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。举例:Testlog4.main(TestLog4.java: 10 )  


 

 

 

你可能感兴趣的:(java,log4j,debug,log,配置)