All*_*sen 27 java maven-2 derby
我正在使用Apache Derby嵌入式数据库在Maven项目中进行单元测试.不幸的是,每当我运行测试时,我最终都会derby.log在项目的根目录中找到该文件.数据库本身是在target目录(jdbc:derby:target/unittest-db;create=true)中创建的,因此这不是问题.在查阅参考指南之后, 我尝试logDevice在JDBC url(jdbc:derby:target/unittest-db;create=true;logDevice=/mylogs)上设置参数,但这似乎是针对不同的日志,因此derby.log仍然会出现.
任何帮助深表感谢.
小智 47
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>
Run Code Online (Sandbox Code Playgroud)
ste*_*own 21
您可以derby.log通过创建以下类来删除文件
public class DerbyUtil {
public static final OutputStream DEV_NULL = new OutputStream() {
public void write(int b) {}
};
}
Run Code Online (Sandbox Code Playgroud)
并设置JVM系统属性derby.stream.error.field,例如,使用以下JVM命令行参数:
-Dderby.stream.error.field=DerbyUtil.DEV_NULL
Run Code Online (Sandbox Code Playgroud)
小智 8
在derby.properties文件中包含以下内容:
derby.stream.error.file=/dev/null
Run Code Online (Sandbox Code Playgroud)
( 要么
derby.stream.error.file=\\Device\\Null
Run Code Online (Sandbox Code Playgroud)
在Windows上)