您的位置:首页 > 其它

自定义Log4j日志记录工具类

2014-05-24 11:39 274 查看
做项目时,有时要根据需求输出一些特定的日志信息,这就需要自定义Log4j,我写了一个简单的Log4jUtils类,供大家参考!

需要的jar:log4j-1.2.15.jar和junit-4.10.jar,可以去网上下载,很容易!

Log4jUtils:

package hing.study.log4j;

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

/**
* @author hing
* @createTime : 2014-5-24 上午11:17:02
* @description : 自定义Log4jUtils工具类,根据自己的需要来输出特定的信息
*/
public class Log4jUtils {

/**
* Log4j的一个实例
*/
private Logger logger;

/**
* 默认的构造方法
*/
public Log4jUtils() {
setPropertyConfigurator();
logger = Logger.getLogger(Log4jUtils.class);

}

/**
* 自定义所要输出日志的类的构造方法
* @param clazz
*/
public Log4jUtils(Class<?> clazz) {
setPropertyConfigurator();
logger = Logger.getLogger(clazz);
}

/**
* @desc : 配置Log4j所需要的属性
*/
private void setPropertyConfigurator() {
String path = this.getClass().getClassLoader()
.getResource("hing/study/log4j/log4j.properties").getPath();
PropertyConfigurator.configure(path);
}

// Level级别:OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL 从左到右Level级别依次降低
public enum LogLevel {
OFF, FATAL, ERROR, WARN, INFO, DEBUG, TRACE, ALL
};

public void log(LogLevel level, String message) {

switch (level) {
case OFF:
logOFF(message);
break;
case FATAL:
logFATAL(message);
break;
case ERROR:
logERROR(message);
break;
case WARN:
logWARN(message);
break;
case INFO:
logINFO(message);
break;
case DEBUG:
logDEBUG(message);
break;
case TRACE:
logTRACE(message);
break;
default:
logALL(message);
break;
}
}

private void logOFF(String message) {
}

private void logFATAL(String message) {
logger.fatal(message);
}

private void logERROR(String message) {
logger.error(message);
}

private void logWARN(String message) {
logger.warn(message);
}

private void logINFO(String message) {
logger.info(message);
}

private void logDEBUG(String message) {
logger.debug(message);
}

private void logTRACE(String message) {
logger.trace(message);
}

private void logALL(String message) {
}

public void log(LogLevel level, String message, Throwable t) {

switch (level) {
case OFF:
logOFF(message, t);
break;
case FATAL:
logFATAL(message, t);
break;
case ERROR:
logERROR(message, t);
break;
case WARN:
logWARN(message, t);
break;
case INFO:
logINFO(message, t);
break;
case DEBUG:
logDEBUG(message, t);
break;
case TRACE:
logTRACE(message, t);
break;
default:
logALL(message, t);
break;
}
}

private void logOFF(String message, Throwable t) {
}

private void logFATAL(String message, Throwable t) {
logger.fatal(message, t);
}

private void logERROR(String message, Throwable t) {
logger.error(message, t);
}

private void logWARN(String message, Throwable t) {
logger.warn(message, t);
}

private void logINFO(String message, Throwable t) {
logger.info(message, t);
}

private void logDEBUG(String message, Throwable t) {
logger.debug(message, t);
}

private void logTRACE(String message, Throwable t) {
logger.trace(message, t);
}

private void logALL(String message, Throwable t) {
}

}

log4j.properties和Log4jUtils同一目录下。

log4j.properties:

log4j.rootLogger=ALL, 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
测试:

TestLog4j:

package hing.test.log4j;

import hing.study.log4j.Log4jUtils;
import hing.study.log4j.Log4jUtils.LogLevel;

import org.junit.Test;

public class TestLog4j {

@Test
public void testLog4j(){
Log4jUtils log = new Log4jUtils(TestLog4j.class);
log.log(LogLevel.FATAL, "发生严重问题");
log.log(LogLevel.ERROR, "发生错误");
log.log(LogLevel.WARN, "发出警告");
log.log(LogLevel.INFO, "Log4jUtils正常运行");
log.log(LogLevel.DEBUG, "我在测试Log4jUtils");
log.log(LogLevel.TRACE, "我在追踪Log4jUtils");
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: