Log4j 的组件说明

使用log4j大概涉及3个主要概念:

  1. 公共类 Logger

    Logger 负责处理日志记录的大部分操作。

  2. 公共接口 Appender

    Appender 负责控制日志记录操作的输出。

  3. 公共抽象类Layout

    Layout 负责格式化Appender的输出。

3.1.Logger

日志记录器(Logger)是日志处理的核心组件。log4j具有5种正常级别(Level)。 日志记录器(Logger)的可用级别Level (不包括自定义级别 Level), 以下内容就是摘自log4j API (http://jakarta.apache.org/log4j/docs/api/index.html):

  • static Level DEBUG

    DEBUG Level指出细粒度信息事件对调试应用程序是非常有帮助的。

  • static Level INFO

    INFO level表明 消息在粗粒度级别上突出强调应用程序的运行过程。

  • static Level WARN

    WARN level表明会出现潜在错误的情形。

  • static Level ERROR

    ERROR level指出虽然发生错误事件,但仍然不影响系统的继续运行。

  • static Level FATAL

    FATAL level指出每个严重的错误事件将会导致应用程序的退出。

另外,还有两个可用的特别的日志记录级别: (以下描述来自log4j API http://jakarta.apache.org/log4j/docs/api/index.html):

  • static Level ALL

    ALL Level是最低等级的,用于打开所有日志记录。

  • static Level OFF

    OFF Level是最高等级的,用于关闭所有日志记录。

日志记录器(Logger)的行为是分等级的。

 

 
日志记录器(Logger)将只输出那些级别高于或等于它的级别的信息。如果没有设置日志记录器(Logger)的级别,那么它将会继承最近的祖先的级别。因此,如果在包com.foo.bar中创建一个日志记录器(Logger)并且没有设置级别,那它将会继承在包com.foo中创建的日志记录器(Logger)的级别。如果在com.foo中没有创建日志记录器(Logger)的话,那么在com.foo.bar中创建的日志记录器(Logger)将继承root 日志记录器(Logger)的级别,root日志记录器(Logger)经常被实例化而可用,它的级别为DEBUG

 

有很多方法可以创建一个日志记录器(Logger),下面方法可以取回root日志记录器:

Logger logger = Logger.getRootLogger();

还可以这样创建一个新的日志记录器:

Logger logger = Logger.getLogger("MyLogger");

比较常用的用法,就是根据类名实例化一个静态的全局日志记录器:

static Logger logger = Logger.getLogger(test.class);

所有这些创建的叫"logger"的日志记录器都可以用下面方法设置级别:

logger.setLevel((Level)Level.WARN);

可以使用7个级别中的任何一个; Level.DEBUG, Level.INFO, Level.WARN, Level.ERROR, Level.FATAL, Level.ALL and Level.OFF.

3.2.Appender

Appender 控制日志怎样输出。下面列出一些可用的Appender(log4j API中所描述的 http://jakarta.apache.org/log4j/docs/api/index.html):

  1. ConsoleAppender:使用用户指定的布局(layout) 输出日志事件到System.out或者 System.err。默认的目标是System.out。

  2. DailyRollingFileAppender 扩展FileAppender,因此多个日志文件可以以一个用户选定的频率进行循环日志记录。

  3. FileAppender 把日志事件写入一个文件

  4. RollingFileAppender 扩展FileAppender备份容量达到一定大小的日志文件。

  5. WriterAppender根据用户的选择把日志事件写入到Writer或者OutputStream。

  6. SMTPAppender 当特定的日志事件发生时,一般是指发生错误或者重大错误时,发送一封邮件。

  7. SocketAppender 给远程日志服务器(通常是网络套接字节点)发送日志事件(LoggingEvent)对象。

  8. SocketHubAppender 给远程日志服务器群组(通常是网络套接字节点)发送日志事件(LoggingEvent)对象。

  9. SyslogAppender给远程异步日志记录的后台精灵程序(daemon)发送消息。

  10. TelnetAppender 一个专用于向只读网络套接字发送消息的log4j appender。

还可以实现 Appender 接口,创建以自己的方式进行日志输出的Appender。

3.2.1.使用ConsoleAppender

ConsoleAppender可以用这种方式创建:

ConsoleAppender appender = new ConsoleAppender(new PatternLayout());

创建了一个控制台appender,具有一个默认的PatternLayout。它使用了默认的System.out 输出。

3.2.2.使用FileAppender

FileAppender可以用这种方式创建:

FileAppender appender = null;try {appender = new FileAppender(new PatternLayout(),"filename");} catch(Exception e) {}

上面用到的构造函数:

FileAppender(Layout layout, String filename)实例化一个FileAppender并且打开变量"filename"指定的文件。

另一个有用的构造函数是:

FileAppender(Layout layout, String filename, boolean append)实例化一个FileAppender并且打开变量"filename"指定的文件。

这个构造函数还可以选择是否对指定的文件进行追加的方式输出。如果没有指定值,那么默认的方式就是追加。

3.2.3.使用WriterAppender

WriterAppender可以用这种方式创建:

WriterAppender appender = null;try {appender = new WriterAppender(new PatternLayout(),new FileOutputStream("filename"));} catch(Exception e) {}

这个WriterAppender使用的构造函数带有PatternLayout和OutputStream参数,在这种情况下, FileOutputStream用于向一个文件输出。当然,它还具有其他可用的构造函数。

3.3.Layout

Appender必须使用一个与之相关联的 Layout,这样它才能知道怎样格式化它的输出。当前,log4j具有三种类型的Layout:

  1. HTMLLayout 格式化日志输出为HTML表格。

  2. PatternLayout 根据指定的 转换模式格式化日志输出,或者如果没有指定任何转换模式,就使用默认的转换模式。

  3. SimpleLayout 以一种非常简单的方式格式化日志输出,它打印级别 Level,然后跟着一个破折号“-“ ,最后才是日志消息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值