Ответ 1
Вы заметите, что Logger
больше не объявляет такой метод.
log4j версия 2 сделала некоторые кардинальные изменения. Вот журнал изменений. getLogger
похоже, перемещен в класс LogManager
.
Вот, как они предлагают сделать миграцию.
У меня есть импорт 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?
Вы заметите, что Logger
больше не объявляет такой метод.
log4j версия 2 сделала некоторые кардинальные изменения. Вот журнал изменений. getLogger
похоже, перемещен в класс LogManager
.
Вот, как они предлагают сделать миграцию.
Я даю пример для лучшего понимания.
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);
}
}
с новым 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());
Примечание. Не забудьте поместить файл конфигурации в корневую директорию проекта, иначе вы не сможете получить свои журналы.
Надеюсь, это поможет кому-то С уважением
Да, ваше наблюдение правильное. Оно не поддерживает метод getLogger().
Отметьте эту ссылку для документации: http://logging.apache.org/log4j/2.x/log4j-core/apidocs/index.html
Пример учебника: http://www.javabeat.net/log4j-2-example/
Как отмечалось в других ответах, Logger
теперь является интерфейсом, и вы можете получить экземпляры Logger из LogManager
.
API теперь отделен от реализации, чтобы дать команде свободу изменять реализацию, не нарушая код пользователя. API будет редко меняться, и если он изменится, он будет в версии 2.x, а не версии 2.0.x. Тем не менее, вероятно, рекомендуется всегда использовать соответствующие версии log4j-api и log4j-core.