java:log4j学习(4)-转帖:Log4j 简单配置及问答
2008-02-25 10:39
387 查看
Log4j 简单配置
***************************************
关键字:Log4j
难易度:简单
软件版本:apache-log4j-1.2.9
时间:2006-01-26
Author:Kino
***************************************
呵呵 快过年了。眼看身边的朋友一个一个离开,踏上归途,心里不免有些淡淡的忧伤。为了消磨时间,写写文章也和久违的大家聊聊。
这里先祝愿各位朋友新春快乐。在狗年旺、旺、旺旺旺。
切入正题吧。大名鼎鼎的Log4j我也理解得不深,这里采用假设的问答方式介绍吧。
Q:Log4j是个什么东西?
A:Log4j应该叫做 Log for java吧,是ApacheGroup旗下的明星项目,已经应用在很多方面了。同类的还有针对c c++等的log4c log4XXX之类。请自己看链接:
Q:Log4j到底是怎么被应用得?
A:这就要从结构上说了,首先我们应用的并不是Log4j而是Jakarta-Commons-logging,但是这只是一个interface包没有具体的实现(其实是有的,叫做SampleLog弱但是快)。所以在大火的source里你只需要面向Logging编程而无须关心到底是如何生成的。因为Logging项目支持很多实现并不一定是Log4j。还有JDK的Log也行啊。那我们要做的就是 配置 Log4j到系统就好了。
Q:Log4j到底要配置什么东西,才能被系统识别?
A:2个:Jar包 和 log4j配置文件。 Jar我就不说了。现在来说Log4j配置文件。这个文件可以随意命名,默认的文件是 log4j.properties 。放在你的src根目录下就好。比如 你的source的catagory是com.yourcompany.xx那么放在和com并列的目录下就好。
Q:如果我不想用默认的log4j.properties 我应该怎么定义,怎么做?
A:那就使用下边的命令定义:
System.setProperty(""); -_-! 具体内容想不起来了,留言中补充吧。
如果你是Struts工程或者Web工程,需要做一个sevlet把这段代码载入。重载ActionServlet的init方法就好。
Q:这个文件如何定义?
A:如下例。(具体的可以查阅JavaDoc)
### direct log messages to console ###
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.Threshold=INFO
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy MMM dd HH:mm:ss:SSS} %-5p %m (%F:%L) [%t]%n
### direct messages to file gm_web.log ###
log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE.File=../logs/gm_web.log
log4j.appender.FILE.MaxFileSize=1000KB
log4j.appender.FILE.MaxBackupIndex=5
log4j.appender.FILE.Append=true
log4j.appender.FILE.Threshold=DEBUG
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%d{yyyy MMM dd HH:mm:ss:SSS} %-5p %m (%F:%L) [%t]%n
# Set root category priority to INFO and its only appender to CONSOLE.
log4j.rootCategory=ERROR, CONSOLE, FILE
log4j.logger.com.mycompany.ui=DEBUG, CONSOLE, FILE
XML格式的定义,我就不说了,资料满天都是。
Q:听说Log记录有继承关系,那么多Log,效率太低了吧
A:有继承关系,对应的当然就有打破继承的定义,比如上例。
log4j.rootCategory=ERROR, CONSOLE, FILE
log4j.logger.com.mycompany.ui=DEBUG, CONSOLE, FILE
com.mycompany.ui就继承了rootCategory的Log记录级别。但是如果像破除使用additivity
log4j.additivity.com.mycompany.ui=false
就KO了。
Q:log4j.appender.FILE.File=yourlogfile.log 到底给我把Log放哪去了?能改不?
A:如果是Tomcat那就放到bin下边了。能改啊,bin就是基准目录,写相对路径就好咯。如上例。
Q:Log4j中ConversionPattern到底都是什么意思,都怎么用啊?
A: 如下解释
[c]/[C] -- 返回用来决定 Class名称 以及 package路径(路径也可是部分的)
[d] -- 返回时间 可能有各种格式format的时间。
[F] -- 返回发出记载Log请求的文件得名字。
[l] -- 返回生成log事件的调用者的Location Information。
[L] -- 返回发出记载Log请求的行数。
[m] -- 返回用户自己写的 message。
[M] -- 返回发出记载Log请求的方法名称。
-- 返回 换行。(依据平台不同而不同)
[p] -- 返回Log事件的优先级。
[r] -- 返回从Application开始到这条Log事件产生之间的时间间隔。(毫秒)
[t] -- 返回生成Log事件的线程名称。
[x] -- 返回与生成Log事件的线程相关的NDC(内嵌特征内容)
[X] -- 返回与生成Log事件的线程相关的MDC(映射特征内容),要KeyofMDC
分隔符 -- 空格,可能在left 也可能在 right
Q:ConversionPattern参数能去哪里参考呢?
A:JavaDoc PatternLayout 类。
http://logging.apache.org/log4j/docs/api-unstable/index.html
Q:Log4j会不会太慢啊,性能如何?
A:这个问题不好回答。反正记录一条Log大约的时间是20ms 到 400ms吧,根据你ConversionPattern需要记录的格式内容,以及package catagory的继承关系来决定。那么每个pattern到底哪个快哪个慢,哪个超级慢,请看http://logging.apache.org/log4j/docs/api-unstable/index.html。总归一句话,只要让log4j给你trace调用关系,反射class 就别指望能快,格谁都一样,是吧。
Q:下班了没,啰嗦这么多,有问题再问你吧,留下联系信息
A:刚下班,还吃了朋友的蛋糕(他本人正在飞机上,哈哈,吃了个独食),回家咯。讨论问题的请留言或者kinoviti@gmail.com QQ:23493713
***************************************
关键字:Log4j
难易度:简单
软件版本:apache-log4j-1.2.9
时间:2006-01-26
Author:Kino
***************************************
呵呵 快过年了。眼看身边的朋友一个一个离开,踏上归途,心里不免有些淡淡的忧伤。为了消磨时间,写写文章也和久违的大家聊聊。
这里先祝愿各位朋友新春快乐。在狗年旺、旺、旺旺旺。
切入正题吧。大名鼎鼎的Log4j我也理解得不深,这里采用假设的问答方式介绍吧。
Q:Log4j是个什么东西?
A:Log4j应该叫做 Log for java吧,是ApacheGroup旗下的明星项目,已经应用在很多方面了。同类的还有针对c c++等的log4c log4XXX之类。请自己看链接:
Q:Log4j到底是怎么被应用得?
A:这就要从结构上说了,首先我们应用的并不是Log4j而是Jakarta-Commons-logging,但是这只是一个interface包没有具体的实现(其实是有的,叫做SampleLog弱但是快)。所以在大火的source里你只需要面向Logging编程而无须关心到底是如何生成的。因为Logging项目支持很多实现并不一定是Log4j。还有JDK的Log也行啊。那我们要做的就是 配置 Log4j到系统就好了。
Q:Log4j到底要配置什么东西,才能被系统识别?
A:2个:Jar包 和 log4j配置文件。 Jar我就不说了。现在来说Log4j配置文件。这个文件可以随意命名,默认的文件是 log4j.properties 。放在你的src根目录下就好。比如 你的source的catagory是com.yourcompany.xx那么放在和com并列的目录下就好。
Q:如果我不想用默认的log4j.properties 我应该怎么定义,怎么做?
A:那就使用下边的命令定义:
System.setProperty(""); -_-! 具体内容想不起来了,留言中补充吧。
如果你是Struts工程或者Web工程,需要做一个sevlet把这段代码载入。重载ActionServlet的init方法就好。
Q:这个文件如何定义?
A:如下例。(具体的可以查阅JavaDoc)
### direct log messages to console ###
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.Threshold=INFO
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyy MMM dd HH:mm:ss:SSS} %-5p %m (%F:%L) [%t]%n
### direct messages to file gm_web.log ###
log4j.appender.FILE=org.apache.log4j.RollingFileAppender
log4j.appender.FILE.File=../logs/gm_web.log
log4j.appender.FILE.MaxFileSize=1000KB
log4j.appender.FILE.MaxBackupIndex=5
log4j.appender.FILE.Append=true
log4j.appender.FILE.Threshold=DEBUG
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
log4j.appender.FILE.layout.ConversionPattern=%d{yyyy MMM dd HH:mm:ss:SSS} %-5p %m (%F:%L) [%t]%n
# Set root category priority to INFO and its only appender to CONSOLE.
log4j.rootCategory=ERROR, CONSOLE, FILE
log4j.logger.com.mycompany.ui=DEBUG, CONSOLE, FILE
XML格式的定义,我就不说了,资料满天都是。
Q:听说Log记录有继承关系,那么多Log,效率太低了吧
A:有继承关系,对应的当然就有打破继承的定义,比如上例。
log4j.rootCategory=ERROR, CONSOLE, FILE
log4j.logger.com.mycompany.ui=DEBUG, CONSOLE, FILE
com.mycompany.ui就继承了rootCategory的Log记录级别。但是如果像破除使用additivity
log4j.additivity.com.mycompany.ui=false
就KO了。
Q:log4j.appender.FILE.File=yourlogfile.log 到底给我把Log放哪去了?能改不?
A:如果是Tomcat那就放到bin下边了。能改啊,bin就是基准目录,写相对路径就好咯。如上例。
Q:Log4j中ConversionPattern到底都是什么意思,都怎么用啊?
A: 如下解释
[c]/[C] -- 返回用来决定 Class名称 以及 package路径(路径也可是部分的)
[d] -- 返回时间 可能有各种格式format的时间。
[F] -- 返回发出记载Log请求的文件得名字。
[l] -- 返回生成log事件的调用者的Location Information。
[L] -- 返回发出记载Log请求的行数。
[m] -- 返回用户自己写的 message。
[M] -- 返回发出记载Log请求的方法名称。
-- 返回 换行。(依据平台不同而不同)
[p] -- 返回Log事件的优先级。
[r] -- 返回从Application开始到这条Log事件产生之间的时间间隔。(毫秒)
[t] -- 返回生成Log事件的线程名称。
[x] -- 返回与生成Log事件的线程相关的NDC(内嵌特征内容)
[X] -- 返回与生成Log事件的线程相关的MDC(映射特征内容),要KeyofMDC
分隔符 -- 空格,可能在left 也可能在 right
Q:ConversionPattern参数能去哪里参考呢?
A:JavaDoc PatternLayout 类。
http://logging.apache.org/log4j/docs/api-unstable/index.html
Q:Log4j会不会太慢啊,性能如何?
A:这个问题不好回答。反正记录一条Log大约的时间是20ms 到 400ms吧,根据你ConversionPattern需要记录的格式内容,以及package catagory的继承关系来决定。那么每个pattern到底哪个快哪个慢,哪个超级慢,请看http://logging.apache.org/log4j/docs/api-unstable/index.html。总归一句话,只要让log4j给你trace调用关系,反射class 就别指望能快,格谁都一样,是吧。
Q:下班了没,啰嗦这么多,有问题再问你吧,留下联系信息
A:刚下班,还吃了朋友的蛋糕(他本人正在飞机上,哈哈,吃了个独食),回家咯。讨论问题的请留言或者kinoviti@gmail.com QQ:23493713
相关文章推荐
- java:log4j学习(3)-转帖:Log4J 最佳实践之全能配置文件
- EditPlus配置Java环境,并实现简单的Hello Word!学习中
- java日志级别以及log4j简单配置
- JAVA语言概述,学习路线、环境变量的配置以及最简单的程序HelloWorld
- Java学习之道:mybatis简单应用(基于配置文件)
- JAVA客户端程序在Spring中配置Log4j的简单说明
- java-log4j的简单配置
- Java学习-007-Log4J 日志记录配置文件详解及实例源代码
- java学习笔记9 - Spring mvc中log4j的配置与使用
- javaWeb 项目 之 log4j1 的配置 简单实例
- java:log4j学习(2)-转帖:Common-logging 与 Log4j的结合使用
- Java基础学习总结(126)——Log4j2.xml生产环境实用配置
- JAVA学习-之-log4j配置文件
- java:log4j学习(5)-转帖:Log4j基本使用方法
- Java学习笔记36:Java log4j 基本配置和使用
- java:log4j学习(6)-转帖:log4j使用示例
- java学习(2) jdk配置注意事项以及简单知识点
- Java学习心得——jsp中引入css等格式的配置方法
- JAVA学习笔记(六)--简单抽奖系统
- java学习做的一个简单的骑士飞行棋游戏!