有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

从log4j迁移到log4j2时发生java错误

我想从log4j迁移到log4j2。我有一个自定义记录器类MyLoggerImpl,它从log4j扩展了Logger,并实现了用户定义的界面

MyLoggerImpl。java(使用log4j)

import org.apache.log4j.Logger;    
public class MyLoggerImpl extends Logger implements MyLoggerInterface
{    
     private Logger logger = null;

     MyLoggerImpl(){};

     MyLoggerImpl(Class clas){
     logger = Logger.getLogger(clas);
   }
}

我试着修改自定义类,如下所示。还有log4j2之类的配置文件。xml等已经就位

解决方案1

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;    
public class MyLoggerImpl extends LogManager implements MyLoggerInterface
{

     private Logger logger = null;

     MyLoggerImpl(){};

     MyLoggerImpl(Class clas){
     logger = LogManager.getLogger(clas);
   }
}

解决方案2

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;    
public class MyLoggerImpl implements MyLoggerInterface
{

     private Logger logger = null;

     MyLoggerImpl(){};

     MyLoggerImpl(Class clas){
     logger = LogManager.getLogger(clas);
   }
}

然而,我得到以下例外

Reason:java.lang.ClasCastException: com.custom.logger.MyLoggerImpl incompatible with org.apache.logging.log4j.Logger

我不明白这是什么原因。请帮忙

更新1

public interface MyLoggerInterface{
    public void info(Object infoObject1);
    public void info(Object infoObject1, Object infoObject2);
    public void info(int scheduleId, Object infoObject1);
    public void info(int scheduleId, Object infoObject1, Object infoObject2);

    // similar variations for error and debug methods
}

共 (0) 个答案