Я предпочитаю 4 сам, но я думаю, что 2, безусловно, тоже хорошо.
Вы можете избавиться от файла derby.log
, создав следующий класс
public class DerbyUtil {
public static final OutputStream DEV_NULL = new OutputStream() {
public void write(int b) {}
};
}
и установив системное свойство JVM derby.stream.error.field
, например, используя следующий аргумент командной строки JVM:
-Dderby.stream.error.field=DerbyUtil.DEV_NULL
Derby позволяет указать имя файла, в который записываются сообщения журнала ошибок, используя свойство Java-системы derby.stream.error.file
. Значением по умолчанию является 'derby.log'.
Чтобы избавиться от derby.log
на этапе тестирования Maven surefire, я просто добавляю в конфигурацию плагина определение свойства следующим образом:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<systemProperties>
<property>
<name>derby.stream.error.file</name>
<value>target/derby.log</value>
</property>
</systemProperties>
</configuration>
</plugin>
Я придумал другое решение. Попробуйте; это сработало для меня. Я изменил путь к файлу System.stream.error.file и установил его в одно из свойств, присутствующих в моем файле свойств. Просто добавьте приведенный ниже код в ваш файл applicationContext.xml.
<bean id="setDerbyLog" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetClass"><value>java.lang.System</value></property>
<property name="targetMethod"><value>setProperty</value></property>
<property name="arguments">
<list>
<value>derby.stream.error.file</value>
<value>${derby.stream.error.file}</value>
</list>
</property>
</bean>