Я новичок в API регистрации Java и нуждаюсь в некоторой помощи в этой проблеме:
При создании приложения мой файл конфигурации был сохранен в корневой папке проекта, поэтому я использовал -Djava.util.logging.config.file=logging.properties
для запуска программы.
Но затем я экспортировал исполняемый JAR.
Как настроить ведение журнала сейчас? Он не работает, когда я указываю путь к файлу конфигурации с ключом -D.
Как настроить ведение журнала при запуске JAR?
Ответ 1
Вы не можете указывать аргументы JVM в файле MANIFEST.MF, поэтому вам нужно указать свойства ведения журнала в командной строке или ярлык:
java -Djava.util.logging.config.file=logging.properties -jar yourjar.jar
В противном случае вы можете упаковать файл свойств (logging.properties в вашем случае) в JAR, прочитайте, что на startup и поместите эти настройки в свойства системы.
Ответ 2
В javadoc говорится:
Кроме того, LogManager использует два необязательных системных свойства, которые позволяют больше контролировать считывание начальной конфигурации:
"java.util.logging.config.class" "java.util.logging.config.file"
Эти два свойства могут быть установлены с помощью API настроек или как команда определения свойств строки в команду "java" или как свойство системы определения, переданные в JNI_CreateJavaVM.
Если установлено свойство java.util.logging.config.class, тогда Значение свойства рассматривается как имя класса. Данный класс будет загружается, объект будет создан, и этот конструктор объекта отвечает за чтение в начальной конфигурации. (Этот объект могут использовать другие свойства системы для управления своей конфигурацией.) альтернативный класс конфигурации может использовать readConfiguration (InputStream) для определения свойств в LogManager.
Итак, используйте системное свойство java.util.logging.config.file
и сохраните файл конфигурации из файла jar (что, вероятно, является хорошей идеей, если вы хотите иметь возможность настраивать свойства ведения журнала, чтобы отлаживать или анализировать некоторые странные поведение) или сохранить конфигурационный файл где угодно (в файле jar, например), и использовать системное свойство java.util.logging.config.class
для загрузки и создания экземпляра класса, который будет читать файл в файле jar (с помощью Class.getResourceAsStream()
).
Ответ 3
Я знаю немного поздно, чтобы ответить на этот вопрос, но я столкнулся с этой проблемой несколько дней назад с работающей флягой, и я решил это следующим образом:
java -Djava.util.logging.config.file=logging.properties -cp test.jar com.sample.test.Main
где test.jar - это имя вашего jar файла, а com.sample.test.Main - полное имя вашего основного класса.