2014-02-14 3 views
6

Я работаю над проектом, использующим платформу NetBeans. Под капотом NetBeans использует фреймворк java.util.logging.Как отправить java.util.logging в log4j2?

Я хотел был бы перехватить эти логарифмические звонки, привязывая java.util.logging к log4j2. Это возможно?

Предыдущие вопросы были заданы с такими же, но были указаны только для log4j, а не для log4j2!

ответ

0

Я нашел Решение:

Регистратор имен платформы NetBeans после org.netbeans.* Пространство имен. Чтобы маршрут NetBeans войти звонки, я просто создал Handler и зарегистрировал его с org.netbeans регистраторе:

public class CustomHandler extends Handler 
{ 
    @Override 
    public void publish(LogRecord record) 
    { 
     // Re-direct log calls here (e.g. send record to Log4j2 logger). 
    } 

    @Override 
    public void flush() 
    { 
    } 

    @Override 
    public void close() throws SecurityException 
    { 
    } 
} 

Не забудьте зарегистрировать новые Handler и отключить родительский регистраторы при необходимости:

Logger logger = Logger.getLogger("org.netbeans"); 
logger.addHandler(new CustomerHandler()); 
logger.setUseParentHandlers(false); 
16

ОБНОВЛЕНИЕ 2014/9/12: Из версии 2.1, Log4j 2 содержит JUL bridge, который не требует SLF4J.

Не требуется специальный код. Две вещи:

  1. поставить следующие банки в пути к классам: log4j-апи-2.x, log4j-ядро-2.x и log4j-июлю-2.x.

  2. установить свойство системы java.util.logging.manager в org.apache.logging.log4j.jul.LogManagerкакие-либо звонки сделаны LogManager или Logger

Справку страница Log4J2 показывает зависимости визуально: http://logging.apache.org/log4j/2.x/faq.html#which_jars

+1

Я никогда не хотел используйте SLF4J. У меня есть пользовательская оболочка для Log4j2, действующая как Facade. Я нашел решение и опубликую его. – bblincoe

Смежные вопросы