Я хочу перейти с 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
}