Настройка свойств для входа в Java - PullRequest
4 голосов
/ 29 июня 2011

Прежде чем читать это, вы должны знать, что я являюсь разработчиком Python на неизведанной территории Java.

Я пытаюсь настроить ведение журнала для Java.Я смог заставить его работать, когда я установил logging.properties.Например:

$ /usr/bin/java -server -Xmx512m -Djava.util.logging.config.file= /path/to/logging/file/logging.properties -jar start.jar

Файл logging.properties проверен в системе контроля версий и в моей текущей настройке должен использоваться во всех средах, поэтому я не хочу жестко программировать logging.FileHandler.шаблон в файле logging.properties.Итак, я попытался переместить это в командную строку, выполнив следующее:

$ /usr/bin/java -server -Xmx512m -Djava.util.logging.config.file= /path/to/logging/file/logging.properties -Djava.util.logging.FileHandler.pattern=/var/log/project_name/solr/solr.log -jar start.jar

Но кажется, что FileHandler.pattern не был распознан, поэтому файл никогда не записывался.Итак, тогда я подумал, ну, давайте просто выбросим файл logging.properties и попробуем выбросить все в командную строку.Итак, тогда я попробовал это:

$ /usr/bin/java -server -Xmx512m -Djava.util.logging.Handler=java.util.logging.FileHandler -D.level=WARNING -Djava.util.logging.FileHandler.formatter=java.util.logging.SimpleFormatter -Djava.util.logging.FileHandler.pattern=/var/log/project_name/solr/solr.log -jar start.jar

Но это тоже не сработало.Итак, я прошу о помощи.

Три вопроса:

  1. Почему второй пример, который я привел, не сработал?
  2. Почему третий пример, который я предоставил, не сработал?
  3. Поскольку файл logging.properties зарегистрирован в системе контроля версий и является общим файлом, каков правильный подход к этому?Какова лучшая практика?

При ответе, пожалуйста, используйте маленькие слова для нас новичков в Java.: -)

Ответы [ 2 ]

2 голосов
/ 29 июня 2011

-Dxyz.blahbla.bla=foobar - это системное свойство, и не все можно использовать в качестве системного свойства, потому что будет некоторый код, который будет запрашивать это свойство, и даже если вы можете поместить что угоднохочу, никто не будет читать это.

Например, попробуйте этот код:

class HelloSystemProperty {
     public static void main( String ... args ) {
         System.out.println( System.getProperty("getIt"));
      }
 }

И затем запустите его так:

java -DgetIt=Yeah HelloSystemProperty

Итак, как вы уже могли догадаться, вы не можете простоперейдите и поместите все, что входит в этот файл, как системное свойство UNLESS вы читаете его сами и обрабатываете его соответствующим образом.

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

Так что использования файла должно быть достаточно

Надеюсь, это поможет.

1 голос
/ 14 ноября 2012

«Жесткое кодирование шаблона FileHandler» может быть не такой уж плохой вещью, поскольку шаблон может содержать токены, которые заменяются во время выполнения. Я знаю, что% t заменяется тем, что виртуальная машина считает системным временным каталогом (например, / var / tmp или C: \\ TEMP),% h - домашним каталогом пользователя (или, скорее, системным свойством "user.home"), и есть еще несколько, но я не знаю всех их.

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

...