文档详情

Log4j日志内容详解精编.doc

发布:2017-03-15约1.32万字共8页下载文档
文本预览下载声明
Log4j详细解 1.1. 背景   在应用程序中添加日志记录总的来说基于三个目的:监视代码中变量的变化情况,周期性的记录到文件中供其他应用进行统计分析工作;跟踪代码运行时轨迹,作为日后审计的依据;担当集成开发环境中的调试器的作用,向文件或控制台打印代码的调试信息。   最普通的做法就是在代码中嵌入许多的打印语句,这些打印语句可以输出到控制台或文件中,比较好的做法就是构造一个日志操作类来封装此类操作,而不是让一系列的打印语句充斥了代码的主体。 1.2. Log4j简介   在强调可重用组件开发的今天,除了自己从头到尾开发一个可重用的日志操作类外,Apache为我们提供了一个强有力的日志操作包-Log4j。    Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务 器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就 是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。   此外,通过Log4j其他语言接口,您可以在C、C+ +、.Net、PL/SQL程序中使用Log4j,其语法和用法与在Java程序中一样,使得多语言分布式系统得到一个统一一致的日志组件模块。而且,通 过使用各种第三方扩展,您可以很方便地将Log4j集成到J2EE、JINI甚至是SNMP应用中。 Log4j有三个主要的组件: ?? Loggers(记录器),Appenders (输出源)和Layouts(布局),这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出。综合使用这三个组件可以轻松的记录信息的类型和 级别,并可以在运行时控制日志输出的样式和位置。下面对三个组件分别进行说明: 1、 Loggers    Loggers组件在此系统中被分为五个级别:DEBUG、INFO、WARN、ERROR和FATAL。这五个级别是有顺序的,DEBUG INFO WARN ERROR FATAL,分别用来指定这条日志信息的重要程度,明白这一点很重要,这里Log4j有一个规则:假设Loggers级别为P,如果在Loggers中发 生了一个级别Q比P高,则可以启动,否则屏蔽掉。 假设你定义的级别是info,那么error和warn的日志可以显示而比他低的debug信息就不显示了。 Java程序举例来说:    ***建立Logger的一个实例,命名为“com.foo”***    Logger logger = Logger.getLogger(com.foo); ???? ***com.foo是实例进行命名,也可以任意***    ***设置logger的级别。通常不在程序中设置logger的级别。一般在配置文件中设置。***   logger.setLevel(Level.INFO);   Logger barlogger = Logger.getLogger(com.foo.Bar);   ***下面这个请求可用,因为WARN = INFO***   logger.warn(Low fuel level.);   ***下面这个请求不可用,因为DEBUG INFO***   logger.debug(Starting search for nearest gas station.);   ***命名为“com.foo.bar”的实例barlogger会继承实例“com.foo”的级别。因此,下面这个请求可用,因为INFO = INFO***   (Located nearest gas station.);   ***下面这个请求不可用,因为DEBUG INFO***   barlogger.debug(Exiting gas station search);   这里“是否可用”的意思是能否输出Logger信息。     在对Logger实例进行命名时,没有限制,可以取任意自己感兴趣的名字。一般情况下建议以类的所在位置来命名Logger实例,这是目前来讲比较有效的Logger命名方式。这样可以使得每个类建立自己的日志信息,便于管理。比如:   static Logger logger = Logger.getLogger(ClientWithLog4j.class.getName()); 2、Appenders   禁用与使用日志请求只是Log4j其中的一个小小的地方,Log4j日志系统允许把日志输出到不同的地方,如控制台(Console)、文件(File
显示全部
相似文档