Log4J的使用

你可以从下面的地址下载到log4j,目前版本:1.3
    http://logging.apache.org/site/binindex.html
    log4j不需要安装,你只需要把log4j.jar放在classpath中你就可以使用。
    或者copy log4j.jar到classpath中,在tomcat中你可以把它放在tomcat_home/common/lib目录下
    或者copy log4j.jar到WEB-INF/LIB下
1、介绍
    Log4j包括三个重要的组件:Loggers, Appenders, Layout,分别用于代表记录器、输出目的地和控制打印格式
    一些Logger类的方法描述如下:
    public class Logger {
      // Creation & retrieval methods:
      public static Logger getRootLogger();
      public static Logger getLogger(String name);
      // printing methods:
      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);
      // generic printing method:
      public void log(Level l, Object message);
    }
2、定义配置文件:
   1)配置Logger语法:
     log4j.rootLogger = [ level ] , appenderName, appenderName, …
    eg:
        log4j.rootLogger=WARN, A1 , R
        log4j.logger.DAO=WARN, A2 (其中DAO是自己定义的)
     记录器被赋予级别(level),这里有一套预定的级别标准:DEBUG, INFO, WARN, ERROR, FATAL(级别是由低到高)
   2)配置日志信息输出目的地Appender,其语法为
     log4j.appender.appenderName= fully.qualified.name.of.appender.class
     log4j.appender.appenderName.option1 = value1
     其中,Log4j提供的appender有以下几种:
        org.apache.log4j.ConsoleAppender(控制台),
        org.apache.log4j.FileAppender(文件),
        org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件),
        org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件),
        org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)
        eg:
        log4j.appender.R=org.apache.log4j.RollingFileAppender
        log4j.appender.R.File=C:/log4j.log
        log4j.appender.R.MaxFileSize=100000KB
        log4j.appender.R.MaxBackupIndex=1
        log4j.appender.R.layout=org.apache.log4j.TTCCLayout
   3)配置日志信息的格式(布局),其语法为:
     log4j.appender.appenderName.layout = fully.qualified.name.of.layout.class
     log4j.appender.appenderName.layout.option1 = value1
     其中,Log4j提供的layout有以下几种:
        org.apache.log4j.HTMLLayout(以HTML表格形式布局),
        org.apache.log4j.PatternLayout(可以灵活地指定布局模式),
        org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串),
        org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)
        eg:
        log4j.appender.A2.layout=org.apache.log4j.TTCCLayout
        log4j.appender.A2.layout.ConversionPattern=%p %t %c - %m%n
3、在代码文件中的使用
   private static final Logger logger = Logger.getLogger(classname);//classname:java文件名
   log.debug(".........");
   log.error(".........");
   .....
   具体的运用你可以看log4j的文档。
4、将不同模块中的要打印到不同的日志文件中如何设置:
   主要方法是为不同的模块产生不同的记录器(即Logger,例子中中为DAO、ACTION、TEST),
   然后设置这几个不同的记录器输出日志到不同的Appender(分别为A1、R、A2、A3、A4),
   从而实现了这个功能。
5.关于格式:
   例子1:显示日期和log信息
   log4j.appender.A2.layout=org.apache.log4j.PatternLayout
   log4j.appender.A2.layout.ConversionPattern=%d{yyyy-MM-dd  HH:mm:ss,SSS}  %m%n
   打印的信息是:
      2002-11-12  11:49:42,866  SELECT  *  FROM  TABLENAME  WHERE  1=1  ORDER  BY  FIELD  DESC

   例子2:显示日期,log发生地方和log信息
   log4j.appender.A2.layout=org.apache.log4j.PatternLayout
   log4j.appender.A2.layout.ConversionPattern=%d{yyyy-MM-dd  HH:mm:ss,SSS}  %l  "#"  %m%n
   打印的信息是:
      2002-11-12  11:51:46,313  packagename.ClassName.select(ClassName.java:409)  "#"  SELECT  *  FROM  TABLENAME  WHERE  1=1  ORDER  BY  FIELD  DESC

   例子3:显示log级别,时间,调用方法,log信息
   log4j.appender.A2.layout=org.apache.log4j.PatternLayout
   log4j.appender.A2.layout.ConversionPattern=[%-5p]  %d{yyyy-MM-dd  HH:mm:ss,SSS}  method:%l%n%m%n
   打印的信息是:
      [DEBUG]  2002-11-12  12:00:57,376  method:packagename.ClassName.select(ClassName.java:409)
      SELECT  *  FROM  TABLENAME  WHERE  1=1  ORDER  BY  FIELD DESC
6、写启动文件
    log4j的初始化有几种方式,我下面只提供一种方式。
    InitServlet.java (一个servlet)
    第一种方式==================================
    public class InitServlet extends HttpServlet {
      public void init() throws ServletException {
        ServletContext sct = getServletContext();
        System.out.println("[Log4j]:   The Root Path: " + sct.getRealPath("/"));
        System.out.println("[Log4j]:   InitServlet init start...");
        org.apache.log4j.PropertyConfigurator.configure(sct.getRealPath("/") + getServletConfig().getInitParameter("log4j"));
        System.out.println("[Log4j]:   InitServlet init over.");
      }
      ......
    }
    第二种方式==================================
    public void init() throws ServletException {
      try {
        SystemStarter.getInstance().init(getPath() + "filename");
      }
      catch (ProcessException ex) {
        ex.printStackTrace();
      }
    }
    第二种方式==================================
    BasicConfigurator.configure (): 自动快速地使用缺省Log4j环境。
    DOMConfigurator.configure ( String filename ) :读取XML形式的配置文件。
7、设置web.xml
    上面写的servlet的在AppServer启动是就要运行,所以你需要配置一下web.xml
    加上如下内容:
    <servlet>
      <servlet-name>init</servlet-name>
      <servlet-class>InitServlet</servlet-class>
      <init-param>
        <param-name>log4j</param-name>
        <param-value>/log4j.properties</param-value>
        <!--相对aplication的路径在ROOT/log4j.properties参照上面-->
      </init-param>
      <load-on-startup>1</load-on-startup>
    </servlet>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值