2017-01-04 7 views
2

Я использую log4j 1.2 с общедоступными правами. Теперь я пытаюсь обновить его до log4j2. Но как использовать log4j2 с commons-logging для инициализации log4j2.Commons-logging with log4j2

Я попытался инициализировать вход в систему, как показано ниже. Его работает отлично

**Statement1**: static Log log = new Log4JLogger(Logger.getLogger(Example.class)); 
**Statement2**:log.debug("debug statement"); 

Здесь я использую объект типа org.apache.commons.logging.Log инициализируется с объектом org.apache.log4j.Logger. (org.apache.log4j.Logger класс от log4j 1.2, где, как от log4j2 изменяется на org.apache.logging.log4j.Logger)

Теперь после того, как я обновился до log4j2, Statement1 не будет работать как Log4JLogger() Конструктор ожидает аргумент типа org.apache.log4j.Logger type.

Итак, как я могу использовать ведение журнала Commons с помощью Log4j2?

ответ

2

Вам необходимо добавить зависимость log4j-jcl-2.7 к вашему пути к классам.

Смотрите "which jars" question in the FAQ.

В своем коде, используйте

import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory; 

public class MyClass { 
    private Log log = LogFactory.getLog(MyClass.class); 
    ... 

Вы не должны явно использовать Log4JLogger.

Кроме того, следует помнить, что Log4j2 отличается от Log4j 1 в том, что ему предлагает чистое разделение между API и его реализацией. Таким образом, преимущества использования библиотеки оберток намного меньше, чем 10 лет назад с Log4j 1.

Рассмотрите возможность использования API Log4j2 напрямую: он дает вам то же самое различие между API и реализацией и обладает большей функциональностью, чем ведение журнала сообщества или slf4j.

Обратите внимание, что при использовании API Log4j2 существует небольшой риск: модуль log4j-to-slf4j-2.x всегда присутствует на случай, если вы передумаете и решите использовать Logback (или другую реализацию slf4j) с приложением, которое напрямую использует API Log4j2.

+0

Я знаю, что мне нужно использовать jcl для log4j2 для работы. Но какой класс/конструктор я должен использовать для инициализации регистратора? – user3207875

+0

Я обновил свой ответ. –