Topic: Log4J简介

  Print this page

1.Log4J简介 Copy to clipboard
Posted by: laoli97
Posted on: 2004-05-24 10:26

一、介绍 
Log4J是APACHE组织提供的一个日志组件,利用它可以在不更改程序的情况下,通过修改配置文件来调控日志的输出。
绝大多数的大型开发项目都有它们自己专门用于记录程序日志和对程序跟踪调试的API。许多经验证明,调试信息的管理在软件开发过程中扮演了十分重要的角色。日志管理通常提供了以下的几点好处:
首先,它能在程序运行过程中精确的提供运行时的上下文(context)方便我开发人员找到Bug,一旦在程序中加入了Log 输出的代码,程序运行过程中就能自动的生成并输出Logging信息。
其次,Log信息可以输出到不同的地方(控制台,文件,日志服务器等等)以备时候研究。
最后,除了在开发过程中发挥它的作用外,一个功能足够强大的日志记录开发包能当作一个审计工具(audit tool)使用。
同时,Logging 确实也存在一些缺陷,比如,它影响了程序运行的速度,增加了代码的开销,增加了许多无谓的输出。为了减少这些负面因数的影响,Log4j 被设计得尽量的高效和灵活。因为,很少有哪个应用程序(系统)把记录日志当作主要的功能,Log4j的开发人员尽量使Log4j容易理解和使用。

2.Re:Log4J简介 [Re: laoli97] Copy to clipboard
Posted by: jameszhang
Posted on: 2004-05-24 15:28

论坛里有200多篇关于log4j的文章,用‘搜索’就能找到,不知对你是否有用,呵呵

3.Re:Log4J简介 [Re: laoli97] Copy to clipboard
Posted by: j8eej8ee
Posted on: 2004-05-26 08:00

它影响了程序运行的速度,增加了代码的开销,增加了许多无谓的输出。

这不是最大的罪恶么?

4.Re:Log4J简介 [Re: j8eej8ee] Copy to clipboard
Posted by: jameszhang
Posted on: 2004-05-27 15:06

j8eej8ee wrote:
它影响了程序运行的速度,增加了代码的开销,增加了许多无谓的输出。

这不是最大的罪恶么?

服务器端的这么点开销不算什么,系统出现问题,通过日志能很快找到问题并解决那感觉就一个爽,呵呵

5.Re:Log4J简介 [Re: laoli97] Copy to clipboard
Posted by: kris_zhang
Posted on: 2004-06-15 15:14

----------------------------------------------
环境设置:需要将log4j.jar放入CLASSPATH变量中。并复制到$TOMCAT_HOME/common/lib目录下

[1]----------------------------------------

import org.apache.log4j.PropertyConfigurator;
import org.apache.log4j.Logger;
import org.apache.log4j.Level;

[2]---------------------------------
//获取日志记录器,这个记录器将负责控制日志信息, loggerName一般取本类的名字
static Logger newLogger = Logger.getLogger( "loggerName" );

[3]------------------------------------------------------------
//读取使用Java的特性文件编写的配置文件
PropertyConfigurator.configure("outputFileName");

//自动快速地使用缺省Log4j环境。
//BasicConfigurator.configure ():

//读取XML形式的配置文件
//DOMConfigurator.configure ( String filename );

[4]-----------------插入记录信息 :start----------------------------------------

newLogger.info("Message with the info level");

[5]-------------------------------------------------

newLogger.error("Message with the error level");

[6]-------------------------------------------------

newLogger.debug("Message with the debug level");

[7]-------------------------------------------------

newLogger.warn("Message with the warn level");

newLogger.fatal("Message with the fatal level");

[8]----------------插入记录信息 :end ---------------------------------

newlogger.setLevel ( ( Level ) Level.DEBUG ) ;

---------------------------------------------------------------------------
日志信息的优先级从高到低有ERROR、WARN、INFO、DEBUG,FATAL分别用来指定这条日志信息的重要程度

-------------------------------log4j的配置文件log4j.inf-------------------------------------------------

Log4j支持两种配置文件格式,一种是XML格式的文件,一种是Java特性文件(键=值)。

1. Java特性文件做为配置文件的方法:

(1)配置根Logger,其语法为:
log4j.rootLogger = [ level ] , appenderName, appenderName, …
其中,level 是日志记录的优先级,分为OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL或者您定义的级别。
Log4j建议只使用四个级别,优先级从高到低分别是ERROR、WARN、INFO、DEBUG。
通过在这里定义的级别,您可以控制到应用程序中相应级别的日志信息的开关。
比如在这里定义了INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。
appenderName就是指定日志信息输出到哪个地方。您可以同时指定多个输出目的地。

(2)配置日志信息输出目的地Appender,其语法为

log4j.appender.appenderName = fully.qualified.name.of.appender.class
log4j.appender.appenderName.option1 = value1

log4j.appender.appenderName.option = valueN

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

配置日志信息的格式(布局),其语法为:

log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
log4j.appender.appenderName.layout.option1 = value1

log4j.appender.appenderName.layout.option = valueN

其中,Log4j提供的layout有以下几种:
org.apache.log4j.HTMLLayout(以HTML表格形式布局),
org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

---------------------------------------------------------------
PatternLayout 让用户根据类似于 C 语言 printf 函数的转换模式来指定输出格式。

例如,转换模式为 %r [%t]%-5p %c - %m%n 的 PatternLayout 将生成类似于以下内容的输出:

176 [main] INFO org.foo.Bar - Located nearest gas station.



在以上的输出中:

第一个字段等于自程序开始后消耗的毫秒数
第二个字段表示日志记录请求生成的线程
第三个字段表示日志语句的优先级
第四个字段等于与日志请求相关的类别名称
- 后的文本表示语句的消息。
--------------------------------------------------------------------------------
性能

1.当关闭日志记录时,日志记录的性能。
if(cat.isDebugEnabled() {
cat.debug("Entry number: " + i + " is " + String.valueOf(entry[i]));
}

2.当打开日志记录时,决定是否记录的性能。


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923