Как перенаправить java.util.log в журнал apache commons?

мы используем ведение журнала Apache Commons для нашего ведения журнала. Однако теперь мы используем библиотеку OSS, которая использует ведение журнала java.util.

как мне получить операторы журнала java.util, вызываемые lib, для отображения в нашем файле журнала apache commons log4j?


person feroze    schedule 11.04.2017    source источник


Ответы (1)


Это описано в часто задаваемых вопросах Apache Commons. ?.

да. Классы java.util.logging, присутствующие в java, начиная с версии 1.4, представляют собой как API, так и (примитивную) реализацию ведения журнала. Можно установить реализацию, которая перенаправляет сообщения обратно в commons-logging, который затем, в свою очередь, направляет вызовы в соответствующую конкретную библиотеку ведения журналов, в которую commons-logging отправляет другие сообщения.

В качестве альтернативы ваша реализация java.util.logging отправляет сообщения непосредственно той же реализации, к которой привязана функция commons-logging. Это будет быстрее, хотя, если вы измените конфигурацию ведения журналов для использования другой библиотеки ведения журналов, тогда потребуется также изменить реализацию java.util.logging.

Подробнее см. здесь:

http://wiki.apache.org/myfaces/Trinidad_and_Common_Logging

Они просто создают файл java. util.logging.Hander, чтобы адаптировать вывод JUL к ведению журнала общих ресурсов. В этом примере они, вероятно, должны обрабатывать значения int уровней журнала, которые находятся между другими именованными уровнями журнала, чтобы вы передавали любой настраиваемый уровень журнала в JUL. Пример патча:

@Override
public void publish(LogRecord record) {
    Log log = getLog(record.getLoggerName());
    String message = record.getMessage();
    Throwable exception = record.getThrown();
    int level = record.getLevel().intValue();
    if (level >= Level.SEVERE.intValue()) {
        log.error(message, exception);
    } else if (level >= Level.WARNING.intValue()) {
        log.warn(message, exception);
    } else if (level >= Level.INFO.intValue()) {
        log.info(message, exception);
    } else if (level >= Level.CONFIG.intValue()) {
        log.debug(message, exception);
    } else {
        log.trace(message, exception);
    }
}
person jmehrens    schedule 12.04.2017