commons-logging+log4j 简单的完整的日志操作实例

 

今天研究了一下午 commons-logging+log4 日志工具,终于有了很大的眉目、下面我把整个简单的实例 帖出来、为以后参考。

准备工作:将commons-logging 和 log4j  的 jar 包拷进 CLASSPATH(lib)目录下。

其中 com.landstech.logging包下写有 loggingTest.java 文件

1.loggingTest.java 文件

package com.landstech.logging;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.log4j.PropertyConfigurator;

public class loggingTest {
    
Log log = LogFactory.getLog(loggingTest.class);
/*
  *  如果不使用默认的 log4j.properties 也可以使用PropertyConfigurator 指定配置文件路径
  */
//PropertyConfigurator.
public void loading(){
  /*
   *   1. trace
   *   2. debug
   *   3. info
   *   4. warn
   *   5. error
   *   6. fatal
   */
  String Str = null;
  try{
   int InLength = Str.length();
   System.out.println("Test End!");
  
  }catch( Exception e){
   log.debug("debug 信息 ");
   log.error("error 信息 ");
   log.info("info 信息 ");
   log.fatal("fatal 信息 ");
  }
}
}

2.commonsLoggingTest.jsp 文件

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page import="com.landstech.logging.loggingTest" %>
<%
    loggingTest logIns = new loggingTest();
    logIns.loading();
%>

3. commons-logging.properties  文件指定Log4JLogger 日志工具

org.apache.commons.logging.Log=org.apache.commons.logging.impl.Log4JLogger

4.log4j.properties 文件

#rootLogger  根记录器
log4j.rootLogger=ERROR,console,f1

#Logger
#log4j.logger.com.landstech.logging.loggingTest=DEBUG

#category 类别配置
#log4j.category.com.landstech.logging=DEBUG

#Appenders
#console  控制台输出
log4j.appender.console=org.apache.log4j.ConsoleAppender

#file 文件输出 
#[FileAppender:普通文件输出 | RollingFileAppender:输出到按大小滚动文件 | DailyRollingFileAppender:输出到按日期滚动文件]  
log4j.appender.f1=org.apache.log4j.RollingFileAppender
#log4j.appender.f1=org.apache.log4j.FileAppender
#log4j.appender.f1=org.apache.log4j.DailyRollingFileAppender
# must :\\     if is :\  is false
log4j.appender.f1.File=H:\\loggingTest.log
#log4j.appender.f1.File=H:\\log.html      # 使用HTMLLayout时
log4j.appender.f1.Append=true
log4j.appender.f1.Encoding=UTF-8
log4j.appender.f1.MaxFileSize=200KB

#Layout
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%C]-[%p] %m%n

#PatternLayout 表达式布局
log4j.appender.f1.layout=org.apache.log4j.PatternLayout
log4j.appender.f1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%C]-[%p] %m%n

#HTMLLayout  HTML布局
#log4j.appender.f1.layout=org.apache.log4j.HTMLLayout

#其他:  XMLLayout  XML布局
#log4j.appender.f1.layout=org.apache.log4j.xml.XMLLayout

访问jsp文件在控制台上打印出:

2012-08-09 01:12:19 [com.landstech.logging.loggingTest]-[ERROR] error 信息
2012-08-09 01:12:19 [com.landstech.logging.loggingTest]-[FATAL] fatal 信息

同时在H盘目录下有生成 loggingTest.log 日志文件

文件内容与控制台上打印的内容一致

============================================新增加的:继续昨天遗漏的地方=================================

我们也可以定义记录器的名字

如在log4j.properties 中

#define a logger named ImportEBOMLogger
log4j.logger.ImportEBOMLogger=ERROR,file1

..............

.............

这洋的好处就是 在实例一个logger 对象时 可以直接根据记录器的名字来确定选用哪个记录器

如: 在jsp代码中就可以这洋:

        <%
              Logger log = Logger.getLogger("ImportEBOMLogger");
              PropertyConfigurator.configure("log4j.properties"); 

              log.error("Can only choose Excel files! Please choose again");

        %>

 

 

-------------------------- 

Logger组件的继承性

       Log4J提供了一个root Logger,它是所有Logger组件的“祖先”,它永远存在,且不能通过名字检索或引用,通过Logger.getRootLogger()方法取得它。配置root Logger代码:

       log4j.rootLogger=INFO,console

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

       log4j.apache.myLogger=WARN
       log4j.apache.myLogger.mySonLogger=,file

       以上代码中, mySonLogger是myLogger的子类Logger组件。Logger组件的继承关系:
. 如果子类Logger组件没有定义日志级别,则将继承父类的日志级别;
. 如果子类Logger组件定义了日志级别,就不会继承父类的日志级别;
. 默认情况下,子类Logger组件会继承父类所有的Appender,把它们加入到自己的Appener;
. 如果把子类Logger组件的additivity标志设为false,那么它就不会继承父类Appender。additivity标志 默认值为false;

 

Layout组件的补充:

    Layout组件决定日志输出格式,有以下几种类型:
. org.apache.log4j.HTMLLayout(以HTML表格形式布局);
. org.apache.log4j.PatternLayout(可以灵活地指定布局模式);
. org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串);
. org.apache.log4j.TTCCLayout(包含日志产生的时间、线程和类别等信息);

  org.apache.log4j.xml.XMLLayout(以xml格式布局)

 

Appender组件补充:

    Appender组件决定将日志信息输出到什么地方。支持以下目的地:
. 控制台(Console);
. 文件(File);
. GUI组件(GUI component);
. 套接口服务器(Remote socket server);
. NT的事件记录器(NT Event Logger);
. UNIX Syslog守护进程(Remote UNIX Syslog daemon);

    一个Logger可同时对应多个Appender,示例:myLogger配置二个Appender: 一个file, 一个是console:

    log4j.logger.myAppender=WARN,file,console

    log4j.appender.file=org.apache.log4j.RollingFileAppender
    log4j.appender.file.File=log.txt

    log4j.apender.console=org.apache.log4j.ConsoleAppender

 

 

 

 

 


 

你可能感兴趣的:(html,exception,log4j,unix,File,layout)