Log4j简介

Log4j简介

Log4JApache的一个开放源代码项目,它是一个日志操作软件包。通过使用Log4J,可以指定日志信息输出的多种目的地,比如控制台、文件等;还可以控制每一条日志的输出格式。通过定义日志信息的级别,能够非常细致地控制日志的输出。

 

日志的作用

1)监视代码中变量的变化情况,把数据周期性地记录到文件中供其他应用进行统计分析工作

2)跟踪代码运行时轨迹,作为日后审计的依据。

3)担当集成开发环境中的调试器的作用,向文件或控制台打印代码的调试信息。

 

Log4j的三大组件

Logger:负责生成日志,并能够对日志信息进行分类筛选,即决定什么日志信息应该被输出,什么日志信息应该被忽略。

Appender:定义了日志输出的目的地,指定日志信息应该被输出到什么地方,这些地方可以是控制台、文件和网络设备等。

Layout:指定日志信息的输出格式。

 

一个Logger可以指定多个Appdender,即可以将日志同时输出到多个目的地;每个Appender对应一种Layout

 

 

 

 

 

 

 

Logger组件

public static Logger getRootLogger();

public static Logger getLogger(String name);

public void debug(Object message);

public void info(Object message);

public void warn(Object message);

public void error(Object message);

public void fatal(Object message);

public void log(Priority p,Object message);

 

以上配置了一个Logger组件,名为“helloLogger”,并为它分配了一个日志级别(Priority),取值为“WARN”。一共有5种日志级别:FATALERRORWARNINFODEBUG,其中FATAL的级别最高,接下来依次是ERRORWARNINFODEBUG

 

只有当它输出日志的级别大于或等于为Logger组件配置的日志级别时,这个方法才会被真正执行

 

Appender组件

常用Appender

org.apache.log4j.ConsoleAppender   日子输出到控制台

org.apache.log4j.DailyRollingFileAppender   按照日志滚动的日志文件

org.apache.log4j.FileAppender  把日子存放到一个文件中

 

可以通过以下方式进行配置:

log4j.logger.helloLogger=WARN,file,console

log4j.appender.file=org.apache.log4j.RollingFileAppender  

log4j.appender.file.File=log.txt

log4j.appender.console=org.apache.log4j.ConsoleAppender

 

Layout组件

Layout组件用来决定日志的输出格式

常用Layout

org.apache.log4j.HTMLLayout(HTML表格形式布局)

org.apache.log4j.PatternLayout(可以灵活地指定布局模式)

org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)

org.apache.log4j.TTCCLayout(包含日志线程和类别等信息)

 

 

可以通过以下方式进行配置:

log4j.appender.console.layout=org.apache.log4j.SimpleLayout

 

org.apache.log4j.PatternLayout格式:

符号

描述

%r

自程序开始远行到输出当前日志所消耗的毫秒数

%t

表示输出当前日志的线程的名字

%p

表示日志的级别

%d

表示输出当前日志的日期

%c

表示输出当期日志的Logger的名字

%m%n

表示日志信息的内容

 

 

Logger组件的继承

Log4J提供了一个root Logger,它是所有Logger组件的“祖先”,以下是配置root Logger的代码:

  log4j.rootLogger=INFO,console

  用户可以再配置文件中方便地配置存在继承关系的Logger组件,凡是在符号“.”后面的Logger组件都会成为在符号“.”前面的Logger组件的子类。例如:

  log4j.apache.helloLogger=WARN

  log4j.apache.helloLogger.childLogger=,file

  对于以上配置代码,childLogger就是helloLogger的子类Logger组件。

  Logger组件的继承关系有以下特点:

如果子类Logger组件没有定义日志级别,则将继承父类的日志级别。

如果子类Logger组件定义了日志级别,就不会继承父类的日志级别。

在默认情况下,子类Logger组件会继承父类的所有Appender,把它们加入到自己的Appender清单中。

如果把子类Logger组件的additivity标志设为false,那么它就不会继承父类的Appenderadditivity标志的默认值为true

 

 

 

 

 

 

Log4J的配置文件

Log4J支持两种配置文件格式:一种是XML格式的文件,一种是Java属性文件,采用“键=值”的形式。

1)配置Logger组件

  如果配置root Logger,则语法为:

  log4j.rootLogger = [priority],appenderName,appenderName,...

  其中,priority是日志级别,可选值包括OFFFATALERRORWARNINFODEBUGALL。通过在这里定义级别,可以控制应用程序中相应级别的日志信息的开关。比如定义为INFO级别,则应用程序中所有DEBUG级别的日志信息将不被打印出来。

  appenderName指定Appender组件,用户可以同时指定多个Appender组件。

  如果配置用户自己的Logger组件,则语法为:

log4j.logger.loggerName=[priority],appenderName,appenderName,...

 

 

 

2)配置Appender组件

  配置日志信息输出目的地Appender,其语法为:

  log4j.appender.appenderName=fully.qualified.name.of.appender.class

  log4j.appender.appenderName.option1=value1...

  log4j.appender.appenderName.optionN=valueN

  Log4J提供的Appender有以下几种:

  org.apache.log4j.ConsoleAppender(控制台)

  org.apache.log4j.FileAppender(文件)

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

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

  org.apache.log4j.WriterAppender(将日志信息作为数据流发送到任意指定的地方)

 

 

3)配置Layout组件

配置Layout组件的语法为:

  log4j.appender.appenderName.layout=fully.qualified.name.of.layout.class

log4j.appender.appenderName.layout.option1=value1...

log4j.appender.appenderName.layout.optionN=valueN

Log4J提供的Layout有以下几种:

org.apache.log4j.HTMLLayout(HTML表格形式布局)

org.apache.log4j.PatternLayout(可以灵活地指定布局模式)

org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)

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

 

 

 

 

JavaWeb中使用log4j

Web应用中使用Log4J,则可以创建一个Servlet。若在它的初始化方法中读取Log4J的配置文件并且配置Log4J环境,那么这个ServletWeb应用启动的时候就被加载和初始化了,然后就可以在其他的Web组件中获取Logger对象并输出日志。

应将配置Log4J环境的代码放在Servletinit()方法中,这样可以保证当Servlet被加载并初始化后,Log4J的环境就已经配置好了。

 

public class Log4JServlet extends HttpServlet {

   public void init() throws ServletException {

   //获得配置文件的完整路径

   String path = getServletContext().getRealPath("/");

   String propfile = path+getInitParameter("propfile");

   //配置Log4J环境

   PropertyConfigurator.configure(propfile);

   }

  }

  <servlet>

      <servlet-name>Log4JServlet</servlet-name>

      <servlet-class>com.itheima.servlet.Log4JServlet</servlet-class>

      <init-param>

       <param-name>propfile</param-name>

       <param-value>/WEB-INF/log4j.properties</param-value>

      </init-param>

      <load-on-startup>2</load-on-startup>

    </servlet>

 

 

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值