Log4j基本使用方法

主讲人:王少华  QQ群号:483773664

学习目标

  • 掌握Log4j在java项目中使用

  • 理解log4j.properties各个配置的含义


Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输出格式。

一、输出级别

(一)输出级别

1
log4j.rootLogger=debug, stdout,logfile

其中debug指的日志记录器(Logger)的输出级别。

(二)、各级别的含义

  • fatal:指出严重的错误事件,将会导致应用程序的退出

  • error:指出虽然发生错误事件,但仍然不影响系统的继续运行

  • warm:表明会出现潜在错误的情形

  • info:在粗粒度级别上指明消息,强调应用程序的运行过程

  • debug:指出细粒度信息事件,对调试应用程序非常有帮助。

各应用程序的优先级如下

fatal>error>warn>info>debug

这些优先级的含义是:日志记录器(Logger)将只输出那些级别高于或等于它的信息。例如,级别为debug,将输出fatal、error、warn、info、debug级别的日志信息;而级别为error,将只输出fatal、error级别的日志信息。

二、日志输出目的地Appender

(一)日志输出的目的地

1
log4j.rootLogger=debug, stdout,logfile

其中,stdout、logfile指的是日志输出的目的地的名称

(二)目的地的类型

Log4j允许日志输出到多个目的地,一个输出目的地被称为一个Appender.最常用的有二种:

  • ConsoleAppender:输出日志到控制台,通过Target属性配置输出到System.err或System.out.默认的目标是System.out

  • FileAppender:输出日志事件到一个文件。通过File属性配置文件的路径及名称

除了这二种以外,Log4j还提供了以下三种输出目的地

  • org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),

  • org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件), 

  • org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

三、日志布局类型Layout

(一)日志布局类型

Appender必须使用一个与之相关联的布局类型Layout,用来指定它的输出样式

1
log4j.appender.stdout.layout=org.apache.log4j.SimpleLayout

(二)Layout的样式

log4j中最常用的Layout有以下3种

  • HTMLLayout:格式化日志输出为HTML表格

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

  • PatternLayout:根据指定转换模式格式化日志输出,从而支持丰富多样的输出格式。需要配置layout.ConversionPattern属性,若没有配置该属性,则使用默认的转换模式。

除了以上3种常用的,还有以下一种

org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

四、转换模式ConversionPattern

(一)、实例

1
log4j.appender.logfile.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss}%l %F %p %m%n

(二)参数说明

对于PatternLayout,需要配置layout.ConversionPattern属性,常用的配置参数及含义如下:

  • %d:用来设置输出日志的日期和时间,默认格式为ISO8601。也可以在其后指定格式,比如%d{yyyy-MM-dd HH:mm:ss},输出格式类似于2016-04-25 09:10:08

  • %m:用来输出代码中指定的消息

  • %n:用来输出回车换行符

  • %l:用来输出日志事件的发生位置,包抱类名、发生的线程,以及在代码中的行数。如:chapter06_08.Test.main(Test.java:26)

  • %p:用来输出优先级,即debug、info、warn、error、fatal等

  • %F:用来输出文件名

  • %M:用来输出方法名

1
2016-04-25 13:43:34chapter06_08.Test.main(Test.java:26) Test.java ERROR / by zero

五、在代码中使用Log4j

(一)得到记录器

使用Log4j的第一步就是获取日志记录器,它负责控制日志信息。其语法如下:

1
public static Logger getLogger( String name)

Name一般取本类的名字

1
private static Logger logger = Logger.getLogger(Test.class.getName());

(二)插入日志信息

Logger对象提供了一系列方法来输出不同级别的日志信息

  • public void debug(Object msg)

  • public void debug(Object msg,Throwable t)

  • public void info(Object msg)

  • public void info(Object msg,Throwable t)

  • public void warn(Object msg)

  • public void warn(Object msg,Throwable t)

  • public void error(Object msg)

  • public void error(Object msg,Throwable t)

  • public void fatal(Object msg)

  • public void fatal(Object msg,Throwable t)

六、更多

关于Log4j更加详细的介绍可以去官网查看文档,也可以去我的博客。

我的博客:http://teacherwang.blog.51cto.com/10946447/1767469

log4j文档:http://logging.apache.org/log4j/1.2/manual.html