Ведение журнала отладки не работает с указанным c обработчиком - PullRequest
0 голосов
/ 06 февраля 2020

Я использую реализацию JDK14Logger для apache инфраструктуры общих журналов. Журналы отладки не появляются, и они появляются, только когда я установил для root logger значение FINE. Насколько я понимаю, уровень журнала, установленный на указанные c обработчики, должен переопределять уровень журнала root logger. Однако этого не происходит.

# The following creates the console handler
handlers=java.util.logging.ConsoleHandler, java.util.logging.FileHandler

# Set the default logging level for the root logger
.level=FINE

# Set the default logging level
java.util.logging.ConsoleHandler.level=FINE
java.util.logging.FileHandler.level=FINEST

# log level for the "com.rst.example" package


# Set the default formatter
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter

# Specify the location and name of the log file
java.util.logging.FileHandler.pattern=D:/test.log

тестовый класс:

public class Test {
private  Log logger = LogFactory.getLog(Test.class.getName());

 static  {
    System.getProperties().setProperty("java.util.logging.config.file","log-config.properties");
}

public static void main(String[] args) {
    //-Djava.util.logging.config.file=src/main/resources/log-config.properties

    Test test =  new Test();

    test.logger.info("info from main");
    test.logger.error("error from main");
    test.logger.fatal("fatal from main");
    System.out.println("is dubug enabled? :" + test.logger.isDebugEnabled());
    test.logger.debug("debug from main");

}

}

1 Ответ

0 голосов
/ 06 февраля 2020

Все регистраторы JDK по умолчанию публикуют записи sh в обработчиках регистратора root. Уровень по умолчанию для ConsoleHandler - INFO .

Насколько я понимаю, уровень журнала, установленный на указанные c обработчики, должен перекрывать уровень журнала root logger. Однако этого не происходит.

Это не так, и это не так. Используйте DebugLogging для проверки вашего файла конфигурации на соответствие журналированию JDK .

Журналы отладки не появляются, и они появляются, только когда я установил для root регистратор значение FINE.

Вывод публикуется в обработчик. Отсутствие либо означает, что ваш обработчик не подключен, либо уровень не соответствует ожидаемому, либо обработчик подключен к дочернему регистратору, который не находится на пути публикации.

Измените класс DebugLogging в связанный ответ, включающий вашу конфигурацию и код apache -commons, который выполняет ведение журнала. Не удаляйте код регистрации JDK. Вывод этого кода направит вас к проблеме.

...