Logging 是否有一种方法可以编写L.e(…)而不是Logger.getLogger(getClass()).error(…)?
是否有一种方法可以编写L.e(…)而不是Logger.getLogger(getClass()).error(…) 要处理的主要问题是过滤和行号。如果有人向log4j配置文件添加了一个过滤器,那么它应该应用与我从原始类调用Logger.getLogger(getClass())方法相同的方法。这意味着传入的类对象需要从堆栈跟踪中提取。我认为这是可行的。我只需执行“new Throwable()”,然后调用fillStackTrace,然后导航它以获取有关调用方法的信息 其次,如果不直接修改Log4j代码,可能很难处理,记录器输出的行号应该是调用L.e(msg)的方法的行号,而不是该方法内部的行号Logging 是否有一种方法可以编写L.e(…)而不是Logger.getLogger(getClass()).error(…)?,logging,log4j,Logging,Log4j,是否有一种方法可以编写L.e(…)而不是Logger.getLogger(getClass()).error(…) 要处理的主要问题是过滤和行号。如果有人向log4j配置文件添加了一个过滤器,那么它应该应用与我从原始类调用Logger.getLogger(getClass())方法相同的方法。这意味着传入的类对象需要从堆栈跟踪中提取。我认为这是可行的。我只需执行“new Throwable()”,然后调用fillStackTrace,然后导航它以获取有关调用方法的信息 其次,如果不直接修改Log
有没有解决这些问题的建议?你可以这样做
public class L {
public static void e(Class<?> clazz, Exception e) {
Logger.getLogger(clazz).log(Level.ERROR, "AN exception" , e);
}
}
公共类L{
公共静态无效e(类别类别类别,例外e){
Logger.getLogger(clazz).log(Level.ERROR,“异常”,e);
}
}
然后可以调用
L.e(this.getClass(),e)代码>错误。我不清楚,但我认为您希望在堆栈中使用Throwable.setStackTrace()。一个小调整:“this.class”不是Java,填写当前类名有点麻烦。。。所以也要提供publicstaticvoidethis(对象o,异常e){Logger.getLogger(o.getClass())…
public class L {
public static void e(Class<?> clazz, Exception e) {
Logger.getLogger(clazz).log(Level.ERROR, "AN exception" , e);
}
}