java 封装log4j_扩充Log4j日志级别的方法 - 空间站 - BlogJava

我们的项目需要记不同类型,不同格式,不同级别的日志。一般来说很容易想到Log4j,的确用它来写日志很方便,但是我们的项目对日志的需求有

一点超出了它本身的处理能力:log4j只有debug,info,warn,error四种级别定义,而我们的日志不只这四类,还有

serious,checkout等,如果直接用log4j的log.debug(),log.warn()....是不会写诸如

serious:XXXX:20060708

checkout:xxxxx:20060708这种形式的日志内容的

看了看资料,log4j的日志级别是通过Level类来实现的,log.warn(Object)实际调用的logger.log(Level,Object)方法

这样就好办了,写一个类继承Log4j的Level类,扩充其日志级别,然后封装log4j的logger类,在封装的类中调用logger.log(扩充的Level类,Object)就可以了,具体步骤如下:

1:写一个类继承Level,override父类的构造函数,比如我们需要Serious级别

private static class SeriousLevel extends Level {

private SeriousLevel(int level, String name, int sysLogLevel) {

super(level, name, sysLogLevel);

}

}

2:把这些继承Level的子类归到一个接口中,便于统一调用

public interface  MyLogLevel

{

public static final Level SERIOUS_LEVEL = new SeriousLevel(Priority.ERROR_INT, "SERIOUS", SyslogAppender.LOG_LOCAL0);

public static final Level ALARM_LEVEL = new AlarmLevel(Priority.DEBUG_INT + 50, "ALARM", SyslogAppender.LOG_LOCAL0);

......

}

Priority.ERROR_INT是log4j的级别定义,通过这个我们可以定义自己的级别的大小,比如上述ALARM_LEVEL就比SERIOUS_LEVEL日志级别要高50点

3:封装Log4j的Logger,新增serious(Object) alarm(Object)等方法,在方法中调用Logger.log(Level,Object)来传入我们自己的日志level

public class MyLogger{

private Logger log ;

.......

public void serious(Object pm_objLogInfo)

{

log.loger(MyLogLevel.SERIOUS_LEVEL,pm_objLogInfo);

/*MyLogLevel接口中的所有自定义日志级别都继承自Level*/

}

public void serious(Object pm_objLogInfo)

{

log.loger(MyLogLevel.ALARM_LEVEL,pm_objLogInfo);

}

......

}

4:ok!这就搞定了,Log4j新增了Serious,Alarm等级别,在你的log4j.conf(or log4j.property)配置你需要的日志级别,然后在你的写日志的代码中如此调用即可:

.....

Mylogger loger = new MyLogger();

loger.serious("严重错误!");

......

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值