系统日志输出之log4j学习笔记

Log4J是Apache的一个开放源代码项目,使用Log4j可以将日志输出到文件,OutputStream,java.io.Writer,远程Log4j服务器以及Unix Syslog守护进程。Log4j支持的语言版本:C,C++,C#,Java,Python,和PL/SQL等。

下面介绍Log4j的几个重要组件:

1、Log4j组件

又叫记录器组件,负责产生日志,并能对日志进行筛选,控制什么样的日志应该输出,什么样的日志应该被忽略。Log4j允许程序员定义多个记录器,但是有一个根记录器一直存在 (org.apache.log4j.Logger类),位于记录器层次的顶部,它永远存在且不能通过名字检索,可以通过org.apache.log4j.Logger类的静态方法getRootLogger()方法来获得,而其它的记录器则通过org.apache.log4j.Logger类的静态方法getRootLogger(String name)来实例化。

记录器还有一个重要属性就是日志级别,常用的日志级别有5类:DEBUG,INFO,WARN,ERROR,FATAL。不同的记录器有不同的日志级别,如果一个记录器没有指定日志级别,那么它将从最近的一个指定日志级别的祖先继承级别;如果一个记录器已经指定了日志级别,那么他将不会从它的祖先继承日志级别。为了确保所有记录器都有日志级别,根记录器都是总是有级别的。

Loggeer类中定义了生成日志的方法:debug(),info(),warn(),error(),fatal()。我们在打印日志的时候,只会打印出跟记录器同一日志级别或者更高级别的日志。例如,记录器示例logger定义的日志级别是WARN,那么如果调用,logger.warn("..."),logger.error("..."),logger.fatal("...")将产生日志信息,如果调用logger.debug("..."),logger.info("...")则将被忽略。

log4j定义日志级别的好处:1、但我们用同样的名字调用getLogger(String name)方法,将总是返回同一个记录器对象的引用,这有利于我们在不同的代码或类中用同一个记录器记录日志的信息;2、一个记录器的祖先可以比后代记录器出现的晚,但会自动根据名字之间的关系建立这种家族关系。

2、Appender组件

Log4j中,信息通过Appender组件输出到目的地,一个Appender实例就表示一个输出目的地。

Log4j踢狗你给了一下几种Appender:

org.apacher.log4j.ConsoleAppender,输出目的地为控制台。

org.apacher.log4j.FileAppender,输出目的地为文件。

org.apacher.log4j.DailyRollingFileAppender,按照用户指定的时间或者日期频率滚动产生日志文件。

org.apacher.log4j.RollingFileAppender,当文件达到一定尺寸时,备份日志文件。

3、Layout组件

Layout组件负责格式化输出日志的信息,一个Appender只能有一个Layout。主要有如下几种Layout:

org.apache.log4j.SimpleLayout,SimpleLayout的输出有日志的级别+“_”+日志消息组成,例如DEBUG-hello world。

org.apache.log4j.HTMLLayout,以HTML表格的形式输出日志。

org.apache.log4j.XMLLayout,XMLLayout的输出有一系列在log4j.dtd中定义的<log4j:event>元素组成。

org.apache.log4j.TTCCLayout,TTCCLayout的输出由时间,线程,类别和嵌套的诊断上下文信息组成。

org.apache.log4j.PatternLayout,让程序员按照一定的转换格式指定日志信息的输出格式。

PatternLayout中常用的转换字符及其作用:

c——用于输出日志信息的类别

C——用于输出日志请求的调用者的完整限定名

d——用于输出日志事件的日期,在d字符后面还可以跟上日期格式说明符。例如%d{HH:mm:ss,SSS},如果咩有给出日期格式说明符,那么将使用ISO8601格式,"YYYY-MM-dd HH:mm:ss,SSS"格式

L——用于输出发出日志请求所在的源文件的行号。

m——用于输出由应用程序提供的与这个日志事件相关的消息。

n——用于输出特定平台的行分隔符

p——用于输出日志事件的级别

r——用于输出从应用程序开始直到日志事件产生流逝的毫秒数

t——用于输出产生日志事件的名字

%——序列“%%”,将输出一个单独的%







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值