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); } }
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);
}
这种使用,并发下,会出问题吧
这么写,当你调用任意一个方法的时候LOG变量被反复赋值,是否会产生,日志的混乱呢,或者不产生混乱,而导致反复产生日志对象?
没有细想,你可以考虑一下。
如果仅仅是想要随时替换日志实现的话,commmon-log没准是个好选择
[code="java"]Reflection.getCallerClass(2)[/code]
在lz的LogUtil里面使用上面的代码取出的Class对象,是不是始终都是xxxx.Util?如果是这样的话,每次取出来的都是同一个logger吧?假设在log4j.xml里面根据包层次和使用场景配置了多个logger,如下,lz要如何单独的取出这两个不同的logger那?
[code="xml"]
...
...
[/code]
[quote]是不是始终都是xxxx.Util?[/quote]
写错了,是xxxx.LogUtil。
在每个方法里面加上if(log.isXXXEnabled)进行判断,此处XXX为Info,Error等,以便调整级别