posts - 70,comments - 408,trackbacks - 0

   log4j,顾名思义是专门用来做日志的,有一些书和教程经常把这种非常简单的东西讲的乱作一团,让一些处于学习阶段的朋友看了以后,感觉晕头转向的,我曾经就是受害人之一,所以今天发表一篇,让学习的人一看就懂的小文章,希望对一些学习log4j和没用过log4j的朋友起到帮助.

   log4jApache组织的一个开源项目,它是一个日志操作包,通过使用Log4j可以指定日志信息输出的目的地,如控制台,文件,GUI组件,NT的时间记录器,还可以控制每一条日志输出的格式,此外通过定义日志的级别,能够非常细致的控制日志的输出,最好的地方是这些功能可以通过一个配置文件来灵活的进行配置,而不需要修改程序代码.在应用程序中输出日志有三个目的:

1)     监视代码变量的变化情况,把详细信息记录到文件中,进行统计分析.

2)     跟踪代码运行轨迹,作为日后审计的依据.

3)     担当集成开发环境中的调试器的作用,向文件和控制器打印代码的调试信息.

 

   首先我们要先了解点概念的东西,很简单,先知道它的6个基本类别,就是日志的级别.

1)     fatal致命的

2)     error错误

3)     warn警告

4)     info信息

5)     debug调试

6)     trace细节

   在强调可重用组件的今天,除了自己从头到尾开发一个可重用的日志操作类以外,还有一个Apache为我们提供的一个强有力的现成的日志操作包Log4j.主要由三大组件构成:

1)     Logger:负责生成日志,并能够对日志信息进行分类筛选.

2)     Appender:定义了日志信息输出的目的地,指定日志信息应该被输出到什么地方.

3)     Layout:指定日志信息的输出格式.

   概念的东西就这么点,看看记住就OK.主要是配置文件,这里我们就以一个JAVA工程当例子,因为这样简单明了,让人容易理解.我相信如果在一个简单的JAVA工程里能把log4j理解透彻了.就算换到别的工程里也应该融会贯通了.首先建一个JAVA工程,然后把log4jjar包放入工程的classpath,就是放在工程的根目录就OK.然后创建一个log4j.properties的文件,记住这个文件的名字是固定的.log4j会自己来寻找这个文件,至于这个文件的配置我们稍后在说.OK现在包导好了,配置文件也弄好了.我们在类里简单的调用log4j就可以使用了.下边是例子:

import org.apache.log4j.Logger;

public class Log {

       static Logger log = Logger.getLogger(Log.class);

       public static void main(String[] args) {

              log.fatal("致命...");

              log.error("错误...");

              log.info("信息...");

              log.debug("调试...");

       }

}

 

#这里是定义了日志输出的级别DUBUG,然后声明一个控制台和文件,名字随便起.

log4j.rootLogger=DEBUG,console,file

 

#这里是配置日志输出控制台的相关属性

log4j.appender.console=org.apache.log4j.ConsoleAppender

log4j.appender.console.layout=org.apache.log4j.PatternLayout

log4j.appender.console.layout.ConversionPattern=%-5p %d [%t] (%F,%L) - %m%n

 

#这里是配置日志输出文件的相关属性

log4j.appender.file=org.apache.log4j.RollingFileAppender

log4j.appender.file.File=log.log

log4j.appender.file.MaxFileSize=100KB

log4j.appender.file.MaxBackupIndex=1

log4j.appender.file.layout=org.apache.log4j.PatternLayout

log4j.appender.file.layout.ConversionPattern=%-5p %d [%t] (%F,%L) - %m%n

 

   OK,你调试通过了么?如果通过了,但是想知道配置文件里各各属性的具体含义,那么我在附件里上传了一份比较间接的log4j文档,PDF格式的.Log4J.pdf在熟悉了文档里的相关配置的含义之后,稍加练习灵活运用就算掌握了log4j.

posted on 2007-05-10 16:07 我心依旧 阅读(2543) 评论(8)  编辑  收藏

FeedBack:
# re: 简单化 log4j
2007-05-11 09:20 | BeanSoft
是呀,先跑个例子,再深入...现在的教程都是介绍的一塌糊涂,把各种概念都说一遍,就是没突出重点.  回复  更多评论
  
# re: 简单化 log4j
2007-05-11 10:32 | 交口称赞
不错,就喜欢这种简洁的文章,
没有废话,直观。

有些人写的东西就喜欢扯概念,唬人。
严重同意楼上。  回复  更多评论
  
# re: 简单化 log4j [未登录]
2007-05-11 10:43 | 小木
不错啊  回复  更多评论
  
# re: 简单化 log4j
2007-05-11 11:12 | yyuan
但有些人使用Log4j时,不是简单的调用:
Logger logger = Logger.getLogger(XXX.class);

而是自己又写了个singleton把Logger封装起来,甚至封装Logger.debug等方法,就是不理解他们!  回复  更多评论
  
# re: 简单化 log4j
2007-05-11 11:18 | BeanSoft
Log4j 貌似本身就是单例的... 哈哈, 大概他们是为了用 Spring 依赖注入吧, 或者想将来自己实现一套 logger 或者换别的实现.  回复  更多评论
  
# re: 简单化 log4j
2007-05-11 16:36 | 久城
学习!~的确简单明了!  回复  更多评论
  
# re: 简单化 log4j
2007-05-13 23:00 | Alex
log4j支持动态切换不同的实现,建议import apache commons 的 Logger,可以实现多态  回复  更多评论
  
# re: 简单化 log4j [未登录]
2008-02-26 12:43 | sky
有研究啊  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: