摆脱德比.log

2022-09-01 13:34:27

我正在使用Apache Derby嵌入式数据库在Maven项目中进行单元测试。不幸的是,每当我运行测试时,我最终都会在项目的根目录中找到文件。数据库本身是在目录 () 中创建的,因此这不是问题。在查阅参考指南后,我尝试在JDBC url ()上设置参数,但这似乎是针对不同的日志,因此仍然出现。derby.logtargetjdbc:derby:target/unittest-db;create=truelogDevicejdbc:derby:target/unittest-db;create=true;logDevice=/mylogsderby.log

任何帮助都非常感谢。


答案 1

Derby 允许您使用 Java 系统属性 derby.stream.error.file 指定将错误日志消息写入的文件的名称。默认值为“德比.log”。

为了在 Maven surefire 测试阶段摆脱困境,我只需在插件配置中添加属性定义,如下所示:derby.log

<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>

答案 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

应归功于谁。


推荐