Java Log Manager переопределяет значения по умолчанию, передавая свойства во время выполнения Java-кода
Есть ли способ переопределить конфигурацию LogManager в Java, передав свойство командной строки при запуске приложения. В настоящее время я передаю эти свойства в LogManager, используя
File fn = new File(filename);
URL url = fn.toURI().toURL();
LogManager.getLogManager().readConfiguration(url.openStream())
filename contains this
handlers = java.util.logging.ConsoleHandler
.level = CONFIG
java.util.logging.ConsoleHandler.level = ALL
java.util.logging.ConsoleHandler.formatter = abc.common.util.LogFormatter
java.util.logging.FileHandler.level = ALL
java.util.logging.FileHandler.formatter = abc.common.util.LogFormatter
Я не могу изменить файл, но мне нужно изменить.level = CONFIG на другое значение. Я не могу изменить код, но могу только передать свойства Java при запуске приложения.
Возможно ли достичь?
2 ответа
Вы можете передать новое местоположение конфигурации из командной строки, используя -
java -Djava.util.logging.config.file=<filelocation>
Учитывая ваши ограничения, единственным аргументом использования командной строки является системное свойство java.util.logging.manager. Затем вам нужно будет изменить аргумент classpath, чтобы включить настраиваемый менеджер журналов, чтобы выполнить необходимые шаги.
В качестве альтернативы, если ваша цель - просто изменить уровень корневого регистратора, вы можете присоединить JConsole к работающему приложению и использовать его для переопределения текущих настроек. На вкладке MBeans перейдите в java.util.logging->Logging->Operations->setLoggerLevel. Удалите все символы из поля "p0" и введите имя уровня в верхнем регистре или номер уровня в поле "p1". Нажмите setLoggerLevel, чтобы обновить уровень.