2014-11-11 39 views
0

Я запускаю автономный сервер Jenkins, запущенный из файла WAR. Дженкинс рекламирует себя, используя фреймворк java.util.logging для ведения журнала. Я запускаю его следующим образом:пользовательский файл свойств java.util.logging, приводящий к дублированию файлов журнала

java -Djava.util.logging.config.file=mycustomlogging.properties -jar jenkins.war > jenkins.log 

mycustomlogging.properties содержит следующее:

handlers=java.util.logging.ConsoleHandler 
java.util.logging.ConsoleHandler.level=WARNING 
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter 

Что я ожидал для всех входа идти в jenkins.log и только предупреждающие сообщения и выше быть зарегистрированным ,

Содержимое jenkins.log выглядит так, как ожидалось, но я также вижу созданный файл ~/java0.log, содержащий инструкции журнала в формате XML в INFO и выше.

Почему java0.log создается, когда я указываю ConsoleHandler (и не FileHandler) в mycustomlogging.properties?

Является ли мой файл свойств «объединенным» с системной системой по умолчанию, которая (предположительно) настраивает запись FileHandler в ~/java0.log? Мое предположение заключалось в том, что указание настраиваемого файла свойств полностью отменяет поведение системы по умолчанию.

Возможно, код сервера написан таким образом, что он игнорирует свойства системы и просто записывает журнал в ~/java0.log «независимо от того, что»?

Если это важно, я на OS X 10.10 с помощью Java 7.

ответ

0

Почему java0.log создается, когда я только указать ConsoleHandler (и не FileHandler) в mycustomlogging.properties?

Возможно, файл свойств не найден или конфигурация была выбрана кодом, выполняющим LogManager.reset() или LogManager.readConfiguration (InputStream).

Является ли мой файл свойств «объединенным» с системной системой по умолчанию, которая (предположительно) настраивает запись FileHandler в ~/java0.log?

С помощью LogManager по умолчанию невозможно слияние. Должен быть код, который непосредственно создает и добавляет FileHandler.

Возможно, код сервера написан таким образом, что он игнорирует свойства системы и просто записывает журнал в ~/java0.log «независимо от того, что»?

Да. LogManager.reset выкинет вашу конфигурацию.

Попробуйте настроить Groovy Hook Script на вызов LogManager.reset(), а затем установить ConsoleHandler. Это описано в Jenkins logging wiki.

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