Ошибка при переходе с log4j на log4j2 - PullRequest
0 голосов
/ 05 мая 2020

Я хочу перейти с log4j на log4j2 . У меня есть собственный класс логгера MyLoggerImpl, который расширяет Logger из log4j и реализует пользовательский интерфейс.

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 et c.

Решение 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
}
...