自定义Log4j日志记录例子

8 篇文章 0 订阅

         在网上看了很多例子,对Log4j有些了解,但感觉其日志的显示格式不太好,日志多了很难查看,于是就写了个类,初始化Log4j的基本参数,然后添加了换行功能,具体步骤如下:

     1、下载Log4j.jar包,将下载后的文件名改为:log4j-1.2.14.jar,下载地址:http://dl1.csdn.net/down3/20070605/05181339103.jar

     2、启动MyEclipse或其它IDE工具,新建一个Java工程,名称为“LogTest”。

     3、新建一个包,名为“org”

     4、在“org”包里新建一个类,名称为:LinLog.java,再创建一个类,名称为:TestLog4j.java

     5、在“org”包里创建一个properties文件,可先新建一个“Untitled Text File”类型的文件,编写代码后再保存为“log4j.properties”

     6、运行TestLog4j.java,日志显示结果有两种情况,一是显示在控制台,二是显示在名为“lin-log.txt”文本文件中

LinLog类的代码

package  org;

import  org.apache.log4j.Level;
import  org.apache.log4j.Logger;
import  org.apache.log4j.PropertyConfigurator;

/**
 * 自定义的日志记录类,使用Java的properties文件形式配置Log4j,
 * 使用本类的同时还需要一个properties的配置文件,用于配置Log4j的参数
 * 
@author linyiteng
 
*/

public   class  LinLog {
    
    
/**
     * Log4j的一个实例对象
     
*/

    Logger logger;

    
/**
     * 构造方法,对一些基本参数进行设置
     * 
@param className        Log4j的实例名称,一般都使用当前操作类的类名,比如一个Test类,就应该设置为:Test.class.getName()
     * 
@param folder        配置文件(.properties)的所在目录
     * 
@param file            配置文件(.properties)的文件名
     * 
@param level            日志记录的级别,1代表DEBUG,2代表INFO,3代表WARN,4代表ERROR,5代表FATAL,其它数字代表ALL,
     *                         一般代码调试时设置为1,系统上线后设置为3
     
*/

    
public LinLog(String className, String folder, String file, int level){
        logger 
= Logger.getLogger(className);
        String path 
= getPath(folder);
        PropertyConfigurator.configure(path 
+ file);
        setLevel(level);
    }

    
    
/**
     * 获取指定文件夹所在的绝对路径
     * 
@param folder         指定的文件夹 
     * 
@return                 该文件夹的绝对路径
     
*/

    
private String getPath(String folder){
        String path 
= this.getClass().getClassLoader().getResource(folder).getPath();
        
return path.substring(1).replace("/""/"+ "/";
    }

    
    
/**
     * 设置日志记录的显示级别
     * 
@param level         显示级别,在1-5的范围内,级别越高,表明显示的错误级别越严重,显示的日志记录数越少
     
*/

    
private void setLevel(int level){
        
switch(level){
        
case 1:
            logger.setLevel(Level.DEBUG);
            
break;
        
case 2:
            logger.setLevel(Level.INFO);
            
break;
        
case 3:
            logger.setLevel(Level.WARN);
            
break;
        
case 4:
            logger.setLevel(Level.ERROR);
            
break;
        
case 5:
            logger.setLevel(Level.FATAL);
            
break;
        
default:
            logger.setLevel(Level.ALL);
        }

    }

    
    
/**
     * 显示日志记录的开始标志
     
*/

    
public void start(){
        logger.fatal(
"-----------------------   START   -----------------------"); 
    }

    
    
/**
     * 显示日志记录的结束标志,同时加上两个换行
     
*/

    
public void end(){
        logger.fatal(
"-----------------------    END    ----------------------- "); 
    }

    
    
/**
     * 返回一个Log4j的实例对象,非常重要的方法,在调用debug()等记录方法之前须先调用,如this.yiteng().debug("记录内容");
     * 
@return        当前创建的logger对象
     
*/

    
public Logger yiteng(){
        
return logger;
    }

}

TestLog4j类的代码
package  org;

public   class  TestLog4j  {
    
    
public static void main(String[] args) 
        LinLog ll 
= new LinLog(TestLog4j.class.getName(), "org""log4j.properties"0);
        
        ll.start();
        ll.yiteng().debug(
"The level of message is DEBUG");
        ll.yiteng().info(
"The level of message is INFO");
        ll.yiteng().warn(
"The level of message is WARN");
        ll.yiteng().error(
"The level of message is ERROR");
        ll.yiteng().fatal(
"The level of message is FATAL");
        ll.end();
    }
 
    
}

log4j.properties配置信息

log4j.rootLogger = DEBUG, ca, drfa

log4j.appender.ca
= org.apache.log4j.ConsoleAppender
log4j.appender.ca.layout
= org.apache.log4j.PatternLayout
log4j.appender.ca.layout.ConversionPattern
=%- 5p ( % F: % L) #  % m % n

log4j.appender.drfa
= org.apache.log4j.DailyRollingFileAppender
log4j.appender.drfa.File
= lin -error- log.txt
log4j.appender.drfa.Append
= true
    log4j.appender.drfa.Threshold = ERROR
log4j.appender.drfa.layout
= org.apache.log4j.PatternLayout
log4j.appender.drfa.layout.ConversionPattern
=% d {yyyy-MM-dd HH:mm:ss}   %- 5p  % c #  % m % n
本配置文件设置了两种日志记录方式,ca代表控制台,drfa代表文本文件,该名称为:lin-error-log.txt,只显示级别为ERROR以上的日志信息。关于这些配置参数,网上很多都有说明,这里仅用了最为常用的参数。

日志显示 -- 控制台

FATAL (LinLog.java: 74 ) #  -----------------------    START    -----------------------
DEBUG (TestLog4j.java:
9 ) # The level of message is DEBUG
INFO  (TestLog4j.java:
10 ) # The level of message is INFO
WARN  (TestLog4j.java:
11 ) # The level of message is WARN
ERROR (TestLog4j.java:
12 ) # The level of message is ERROR
FATAL (TestLog4j.java:
13 ) # The level of message is FATAL
FATAL (LinLog.java:
81 ) #  -----------------------     END     -----------------------
日志显示 -- 文本文件
2007 - 12 - 20   16 : 24 : 47  FATAL org.TestLog4j #  -----------------------    START    -----------------------
2007 - 12 - 20   16 : 24 : 47  ERROR org.TestLog4j # The level of message is ERROR
2007 - 12 - 20   16 : 24 : 47  FATAL org.TestLog4j # The level of message is FATAL
2007 - 12 - 20   16 : 24 : 47  FATAL org.TestLog4j #  -----------------------     END     -----------------------


2007 - 12 - 20   16 : 24 : 49  FATAL org.TestLog4j #  -----------------------    START    -----------------------
2007 - 12 - 20   16 : 24 : 49  ERROR org.TestLog4j # The level of message is ERROR
2007 - 12 - 20   16 : 24 : 49  FATAL org.TestLog4j # The level of message is FATAL
2007 - 12 - 20   16 : 24 : 49  FATAL org.TestLog4j #  -----------------------     END     -----------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值