第十七章 使用Log4J进行日志操作(书摘)

来源:互联网 发布:白百合 知乎 编辑:程序博客网 时间:2024/05/01 07:06
    Log4J是Apache的一个开放源代码项目,它是一个日志操作包。通过使用Log4J,可以指定日志信息输出的目的地。如控制台、文件、CGI组件,甚至是套接口服务器、NT的事件记录器和UNIX Syslog守护进程等;还可以控制每一条日志的输出格式。此外,通过定义日志信息的级别,能够非常细致的控制日志的输出。这些功能可以通过一个配置文件来灵活地进行配置,而不需要修改应用程序的代码。

     在应用程序中输出日志有3个目的:
          监视代码中变量的变化情况,把数据同期性地记录到文件中供其他应用进行统计分析工作。
          跟踪代码运行时轨迹,作为日后审计的工具。
          担当集成开放环境中的调试器的作用,向文件或控制台打印代码的调试信息。

    Log4J主要由三大组件构成:
          Logger:负责生成日志,并能够对日志信息进行分类筛选,通俗地讲就是决定什么日志信息应该被输出,什么日志信息应该被忽略。
          Appender:定义了日志信息输出的目的地,指定日志信息应该被输出到什么地方,这些地方可以时控制台、文件、网络设备等。
          Layout:指定日志信息的输出格式。
    一个Logger可以有多个Appender,这意味着日志信息可以同时输出到多个设备上,每个Appender都对应一种Layout,Layout决定了输出日志信息的格式。

    Logger是Log4J的核心组件,它代表了Log4J的日志记录器,它能够对日志信息分类筛选。
    日志级别(Priority)有五种:FATAL、ERROR、WARN、INFO和DEBUG,其中FATAL级别最高,顺次降低。
    对于输出日志的方法,只有当它输出日志的级别大于或等于为Logger组件配置的日志级别时,这个方法才会被真正执行。

    Log4J提供了一个root Logger,它是所有Logger组件的”祖先“。
    用户可以在配置文件中方便地配置存在继承关系的Logger组件,凡是在符号“.”后面的Logger组件都成为在符号“.”前面的Logger组件的子类。例如:
          log4j.apache.helloappLogger = WARN
          log4j.apache.helloappLogger.childLogger = ,file
    对于以上配置代码,childLogger就是helloappLogger的子类Logger组件。
    Logger组件的继承关系有以下特点:
          如果子类Logger组件没有定义日志级别,则将继承父类的日志级别。否则,就不会继承父类的日志级别。
          默认情况下,子类Logger组件会继承父类所有的Appender,把它们加入到自己的Appender清单中。
          如果子类Logger组件的additivity标志设为false,那么就不会继承父类的Appender。additivity标志的默认值为true。

    程序中使用Log4J包含以下过程:
          获取日志记录器;
          读取配置文件,配置Log4J环境;
          输出日志信息。