Метод getLogger() больше не является членом Logger в log4j2?

У меня есть импорт log4j-api-2.0.0.jar и log4j-core-2.0.2.jar в мой путь сборки. Но почему-то следующий код не срабатывал:

import org.apache.logging.log4j.core.Logger;

public class TheClass {

    private static Logger log = Logger.getLogger(TheClass.class);

...

И сообщение об ошибке показывает, что:

The method getLogger(Class<TheClass>) is undefined for the type Logger

Мне так любопытно, что getLogger() больше не является допустимым методом в Logger?

Ответ 2

Я даю пример для лучшего понимания.

private static Logger logger;
        static {
            try {   
                   // you need to do something like below instaed of Logger.getLogger(....);
                    logger = LogManager.getLogger(ResourceService.class); 
              } catch (Throwable th) {
                    throw new HRException("Cannot load the log property file", th);
            }
        }

Ответ 3

с новым Log4J 2, вам нужно добавить хотя бы (в моем случае) log4j-core-2.8.2, log4j-api-2.8.2, а в некоторых других случаях вам может понадобиться добавить также log4j-web-2.8 0,2. Поэтому, когда вы хотите получить регистрацию, которую вы импортируете import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger;

и, наконец, использование будет static final Logger LOGGER = LogManager.getLogger(WebService.class.getName());

Примечание. Не забудьте поместить файл конфигурации в корневую директорию проекта, иначе вы не сможете получить свои журналы.

Надеюсь, это поможет кому-то С уважением

Ответ 5

Как отмечалось в других ответах, Logger теперь является интерфейсом, и вы можете получить экземпляры Logger из LogManager.

API теперь отделен от реализации, чтобы дать команде свободу изменять реализацию, не нарушая код пользователя. API будет редко меняться, и если он изменится, он будет в версии 2.x, а не версии 2.0.x. Тем не менее, вероятно, рекомендуется всегда использовать соответствующие версии log4j-api и log4j-core.