qqtop 2009-08-05 10:28
浏览 235
已采纳

这样使用LOG4J有什么缺陷?


public class LogUtil {

private static Log LOG;

public static void trace(Object o) {

LOG = LogFactory.getLog(Reflection.getCallerClass(2));

LOG.trace(o);

}

public static void trace(String msg, Throwable error) {

LOG = LogFactory.getLog(Reflection.getCallerClass(2));

LOG.trace(msg, error);

}
public static void debug(Object o) {   
    LOG = LogFactory.getLog(Reflection.getCallerClass(2));   
    LOG.debug(o);   
}   
public static void debug(String msg, Throwable error) {   
    LOG = LogFactory.getLog(Reflection.getCallerClass(2));   
    LOG.debug(msg, error);   
}   

public static void info(Object o) {   
    LOG = LogFactory.getLog(Reflection.getCallerClass(2));   
    LOG.info(o);   
}   
public static void info(String msg, Throwable error) {   
    LOG = LogFactory.getLog(Reflection.getCallerClass(2));   
    LOG.info(msg, error);   
}   

public static void warn(Object o) {   
    LOG = LogFactory.getLog(Reflection.getCallerClass(2));   
    LOG.warn(o);   
}   

public static void warn(String msg, Throwable error) {   
    LOG = LogFactory.getLog(Reflection.getCallerClass(2));   
    LOG.warn(msg, error);   
}   

public static void error(Object o) {   

    LOG = LogFactory.getLog(Reflection.getCallerClass(2));   
    LOG.error(o);   
}   
public static void error(String msg, Throwable error) {   
    LOG = LogFactory.getLog(Reflection.getCallerClass(2));   
    LOG.error(msg, error);   
}   

public static void fatal(Object o) {   
    LOG = LogFactory.getLog(Reflection.getCallerClass(2));   
    LOG.fatal(o);   
}   
public static void fatal(String msg, Throwable error) {   
    LOG = LogFactory.getLog(Reflection.getCallerClass(2));   
    LOG.fatal(msg, error);   
}   
}  


在具体的类中直接:
LogUtil.debug("");等等就OK了!
要是不想使用Log4j,Logger,直接修改LogUtil.java就可以了

但是我看别人一般是:
private static Logger log = Logger.getLogger(xxxx.class.getName());
log.debug();

这样写觉得比较麻烦!为什么每个类都要"private static Logger log = Logger.getLogger(xxxx.class.getName());"
??
要是不想使用Log4j,Logger,得修改每个类,去掉"private static Logger log = Logger.getLogger(xxxx.class.getName());" 太麻烦了!


我的那种使用方法有什么缺陷吗?
  • 写回答

5条回答 默认 最新

  • lixjluck 2009-08-05 11:52
    关注

    LogFactory.getLog(Reflection.getCallerClass(2));
    你看看这端代码究竟会做什么
    1、反射
    2、LogFactory.getLog,是不是会做一些初始化等

    我想性能是主要考虑吧

    另外:
    把log4j换掉的几率几乎为0吧

    private static Log LOG;

    public static void trace(Object o) {

    LOG = LogFactory.getLog(Reflection.getCallerClass(2));

    LOG.trace(o);

    }
    这种使用,并发下,会出问题吧

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?