您的位置:首页 > 其它

log4j配置文件学习

2014-09-06 18:24 134 查看
不要拷贝,即使自己写一遍也能学到东西:原地址

项目交接了,代码敏感(老大自己说的,我超不赞同)的老大们写的代码太牛了(从来不加注释)无语了,前期任务多,时间紧抱怨看段代码太浪费时间和精力,一天下来眼睛布满血丝。现在免疫了,抛开了太多顾虑,看一段代码很高兴啊哈哈(后期等死咧,任务超多,假期前列了一下18项,没自己时间,不过可以睡个好觉)

交接的项目中存在solr和ssh的项目,测试那边想将solr日志和ssh的日志分别打印出来,便于查找,自己还要模拟spring编写测试,所以查看了一下知识就直接帮他们配置了一下,但是配置两个地方先使用,现在有时间了,好好学习一下,后期帮他们修改一下,完善项目。

<pre name="code" class="html">log4j.rootLogger=INFO, CONSOLE, A
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppenderlog4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayoutlog4j.appender.CONSOLE.layout.ConversionPattern=[%-5p] %d{HH:mm:ss} (%F:%L) - %m%nlog4j.appender.A =org.apache.log4j.DailyRollingFileAppenderlog4j.appender.A.File
= ../webapps/r2k/logs/log.txtlog4j.appender.A.layout=org.apache.log4j.PatternLayoutlog4j.appender.A.layout.ConversionPattern=[%-5p] %d{HH:mm:ss} (%F:%L) - %m%nlog4j.logger.com.apabi=DEBUG


上面的:

一、log4j.rootLogger=INFO, CONSOLE, A
其中rootLogger定义了日志输出的等级为INFO. 和输出地方为CONSOLE,A两个地方(可以理解为两个选择)。输出等级可以分为OFF<FATAL<ERROR<WARING<INFO<DEBUG<ALL,其中OFF最低,当选择OFF时不打出任何信息,INFO则打印出OFF,FATAL,ERROR,WARING,INFO信息,其他选项信息就可以理解了。CONSOLE ,A分别找到下面的一些配置信息

二、log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
这里定义了CONSOLE输出端的类型,所有的选择如下:

org.apache.log4j.ConsoleAppender(控制台),

org.apache.log4j.FileAppender(文件),

org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),

org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)

org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

三、log4j.appender.A.File = ../webapps/r2k/logs/log.txt
这里定义了输出文件夹,这里动态的制定了文件的地址,如在项目的log4j则配置日志文件到tomcat的webapps下的r2k项目的logs文件夹下的log.txt

四、log4j.appender.A.layout=org.apache.log4j.PatternLayout
这里定义了输出文件以什么样的形式进行展示,展示格式的所有选择如下:

org.apache.log4j.HTMLLayout(以HTML表格形式布局),

org.apache.log4j.PatternLayout(可以灵活地指定布局模式),

org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),

org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

五、log4j.appender.A.layout.ConversionPattern=[r2k][%-5p] %d{HH:mm:ss} (%F:%L) - %m%n
<span style="font-family: Calibri;font-size:12px; line-height: 25.1875px;"> </span><span style="font-family: Calibri;font-size:12px; line-height: 25.1875px;">log4j.appender.stdout.layout.ConversionPattern= [QC] %p [%t] %C.%M(%L) | %m%n</span>

如果使用pattern布局就要指定的打印信息的具体格式ConversionPattern,打印参数如下:

%m 输出代码中指定的消息

%p 输出优先级,即DEBUG,INFO,WARN,ERROR,FATAL

%r 输出自应用启动到输出该log信息耗费的毫秒数

%c 输出所属的类目,通常就是所在类的全名

%t 输出产生该日志事件的线程名

%n 输出一个回车换行符,Windows平台为“rn”,Unix平台为“n”

%d 输出日志时间点的日期或时间,默认格式为ISO8601,也可以在其后指定格式,比如:%d{yyyy MMM dd HH:mm:ss,SSS},输出类似:2002年10月18日 22:10:28,921

%l 输出日志事件的发生位置,包括类目名、发生的线程,以及在代码中的行数。

[QC]是log信息的开头,可以为任意字符,一般为项目简称。

输出的信息

[TS] DEBUG [main] AbstractBeanFactory.getBean(189) | Returning cached instance of singleton bean 'MyAutoProxy'

具体讲解可参照第三部分定义配置文件中的格式化日志信息。

六、log4j.logger.com.apabi=DEBUG
指定项目中com.apabi包下的类的输出日志等级定义为DEBUG

 

七、log4j.logger.org.apache.commons=ERROR
log4j.logger.org.apache.struts=WARN


这两句是struts的包。

    

八、log4j.logger.org.springframework=DEBUG


此句为Spring的包。

九、 log4j.logger.org.hibernate.ps.PreparedStatementCache=WARN
log4j.logger.org.hibernate=DEBUG


此两句是hibernate的包。



log4j.logger.com.fuyou.log.test2=debug,test2log  

  

log4j.logger.com.fuyou.log.test=debug,testlog

不同的包输出到不同的地方

4,log4j的使用

a)、从www.apache.org下载commongs-logging包;

b)、在你的class里面定义protected final Log logger = LogFactory.getLog(this.getClass());
c)、在需要日志输出的地方logger.info(...),logger.error(...),logger.debug(...),....注意,在使用时前最好做个判断if (logger.isDebugEnabled()){logger.debug("...");}其他类似。

1)需要考证,如果我不配置地方,呢么当项目来临时选择哪个

2)配置了com.hibernat= debug,而com.hibernate.de=info这个时候声明有没有顺序,是否会覆盖,需要参看源代码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息