首页 > 代码库 > log4j配置文件学习
log4j配置文件学习
不要拷贝,即使自己写一遍也能学到东西:原地址
项目交接了,代码敏感(老大自己说的,我超不赞同)的老大们写的代码太牛了(从来不加注释)无语了,前期任务多,时间紧抱怨看段代码太浪费时间和精力,一天下来眼睛布满血丝。现在免疫了,抛开了太多顾虑,看一段代码很高兴啊哈哈(后期等死咧,任务超多,假期前列了一下18项,没自己时间,不过可以睡个好觉)
交接的项目中存在solr和ssh的项目,测试那边想将solr日志和ssh的日志分别打印出来,便于查找,自己还要模拟spring编写测试,所以查看了一下知识就直接帮他们配置了一下,但是配置两个地方先使用,现在有时间了,好好学习一下,后期帮他们修改一下,完善项目。
<pre name="code" class="html">log4j.rootLogger=INFO, CONSOLE, Alog4j.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这个时候声明有没有顺序,是否会覆盖,需要参看源代码
log4j配置文件学习