При использовании JUnit мы передаем каталог, используемый для ведения журнала, как свойство JVM. Это отлично работает в командной строке и в Eclipse. Однако это не работает, когда мы передаем то же свойство тестовой задаче Buildr.
test.using :properties => { :"server.name" => "tester", :"log.dir" => log_dir}
Мы знаем, почему это происходит. Свойство устанавливается внутри JVM, а не снаружи. Это означает, что во время выполнения (когда загружается статический класс ведения журнала) свойство еще не установлено. Если мы запросим свойство позже (скажем, из модульного теста), то увидим, что оно задано правильно.
Кто-нибудь знает обходной путь?
Кстати, мы используем log4J, но этот вопрос применим к любому статическому классу, которому требуется доступ к свойству JVM, установленному Buildr.