自定义Log4j日志记录工具类

做项目时,有时要根据需求输出一些特定的日志信息,这就需要自定义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");
	}

}



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值