Log4j

来源:互联网 发布:点卡寄售平台源码 编辑:程序博客网 时间:2024/05/01 08:55

    

    Log4j包含三个首要组件:记录器,输出源和布局器。这三类组件一起工作使开发者可以按消息的类别和等级来输出消息,并且控制在运行时这些消息怎么格式化和在哪里输出这些信息。

   

    记录器层次

           

    任意一个log4j API最大的优点是平滑了System.out.println固有的能力,当允许其他人不受妨碍的打印时使某些日志语句不起作用。这个能力假定日志空间,也就是所有的可能的日志语句的空间,是可以按照开发者的标准来分类的。这个观察资料以前已经引导我们选择类别作为包的中心概念。然而,自从 log4j的1.2版本,记录器(Logger)类已经取代了范围(Category)类,对那些熟悉log4j早期版本的人来说,记录器(Logger)类可以被认为仅仅是范围(Category)类的别名(alias)。

记录器被命名为实体(Loggers are named entities),记录器(Logger)的命名是事件敏感的(case-sensitive),并且他们遵循层次的(hierarchical)命名规则:

 

 用同一个名称调用getLogger方法将返回一个指向同一个记录器对象的引用

    

  Logger x = Logger.getLogger("wombat");

  Logger y = Logger.getLogger("wombat");
  x,y指向同一个日志记录器
   输出源和布局器

日志记录器C的日志语句的输出将定向到C和它的祖先中的所有的输出源。这是条款“输出源的附加特性(appender additivity)”的意图.

然而,假如有一个日志记录器C的祖先,叫做P,有一个附加标识被设置为false,然后C的输出将被定向到C和直到C的祖先P(包括P)中的所有的输出源,但是不包括P的祖先的中的任何输出源。

日志记录器有它自己附加特性,该特性被默认设置为true。

 

日志记录器

添加的输出源

附加特性标识

输出目标

评论

root

A1

not applicable

A1

根日志记录器是匿名的,但是可以用Logger.getRootLogger()方法来存取。根日志记录器没有默认输出源。

x

A-x1, A-x2

true

A1, A-x1, A-x2

x和根的输出源

x.y

none

true

A1, A-x1, A-x2

x和根的输出源

x.y.z

A-xyz1

true

A1, A-x1, A-x2, A-xyz1

x.y.z x和根的输出源

security

A-sec

false

A-sec

由于附加标识被设置为false,没有输出源聚集

security.access

none

true

A-sec

由于安全中附加标识被设置为false,所以仅仅有安全的输出源。

时常,用户不仅希望自定义目的地,而且包括输出格式的自定义。这是通过给输出源设定一个布局器(layout)来到达目的地。

例如,带有"%r [%t] %-5p %c - %m%n"转换格式的PatternLayout布局器将输出和下面的内容类似

 

原创粉丝点击