Java 未调用log4j自定义记录器方法
我想覆盖Java 未调用log4j自定义记录器方法,java,log4j,Java,Log4j,我想覆盖log4j.Logger类的错误(对象消息,Throwable t),以改变一些事情。 然而,当我扩展MYLogger extends Logger时,它仍然没有调用我的错误(..)方法的实现,而是调用了超类的方法 这是密码 public class MYLogger extends Logger { private static final String FQCN = MYLogger.class.getName(); protected MYLogger(Str
log4j.Logger
类的错误(对象消息,Throwable t)
,以改变一些事情。
然而,当我扩展MYLogger extends Logger时,它仍然没有调用我的错误(..)方法的实现,而是调用了超类的方法
这是密码
public class MYLogger extends Logger {
private static final String FQCN = MYLogger.class.getName();
protected MYLogger(String name) {
super(name);
// TODO Auto-generated constructor stub
}
public void error(Object message, Throwable t,final String codeKey, final String messageKey) {
System.out.println("codeKey "+codeKey+" messageKey"+messageKey);
String fmessage=codeKey+":"+messageKey;
if (this.repository.isDisabled(40000))
return;
if (Level.ERROR.isGreaterOrEqual(getEffectiveLevel()))
forcedLog(FQCN, Level.ERROR, fmessage, null);
}
}
和测试类,我试图从中调用我的错误实现(…)
我曾经遇到过这样的问题,我已经这样解决了:
public class MYLogger {
private Logger logger;
public MYLogger(String name) throws IOException {
logger = Logger.getLogger(name);
}
public void error(String message){
if (logger != null)
logger.error(message);
}
}
我曾经遇到过这样的问题,我已经这样解决了:
public class MYLogger {
private Logger logger;
public MYLogger(String name) throws IOException {
logger = Logger.getLogger(name);
}
public void error(String message){
if (logger != null)
logger.error(message);
}
}
您能否验证
getLogger
返回的运行时类型是否为MYLogger
?该行/语句导致线程“main”java.lang.ExceptionInInitializerRor中出现以下异常异常,原因是:java.lang.ClassCastException:org.apache.log4j.Logger无法在test.TestLogger中转换为test.MYLogger。(TestLogger.java:9)就是这样。getLogger
为您提供了一个Logger
而不是MYLogger
。不知道如何解决这个问题。我打赌log4j中一定有一些关于自定义Logger的教程。没有找到任何相关内容,请告诉我们您是否有一些建议。这可能会有所帮助:顺便问一下:我们谈论的是哪个版本的log4j?log4j或者log4j2?在后一种情况下,您可以阅读以下内容:能否验证getLogger
返回的运行时类型是否为MYLogger
?该行/语句在线程“main”中导致以下异常java.lang.ExceptionInInitializerError导致的错误:java.lang.ClassCastException:org.apache.log4j.Logger无法在test.TestLogger处强制转换为test.MYLogger。(TestLogger.java:9)就是这样。getLogger
为您提供了一个Logger
而不是MYLogger
。不知道如何解决这个问题。我打赌log4j中一定有一些关于自定义Logger的教程。没有找到任何相关内容,请告诉我们您是否有一些建议。这可能会有所帮助:顺便问一下:我们谈论的是哪个版本的log4j?log4j或者log4j2?在后一种情况下,您可以阅读以下内容:这基本上是包装记录器,这是可以完成的,但这意味着我需要让开发人员获取MyLogger实例进行错误记录,或者让Logger进行调试,这不是一个好主意,或者我需要将所有方法从Logger复制到MyLogger。这基本上是包装记录器,可以通过这意味着我需要让开发人员获取MyLogger的实例来记录错误,让Logger进行调试,这不是一个好主意,或者我需要将所有方法从Logger复制到MyLogger。