Getting rid of derby.log

derby, java, maven-2

Solution

You can get rid of `derby.log` file by creating the following class

public class DerbyUtil {
    public static final OutputStream DEV_NULL = new OutputStream() {
        public void write(int b) {}
    };
}

and setting the JVM system property `derby.stream.error.field`, for example, using the following JVM command-line argument:

-Dderby.stream.error.field=DerbyUtil.DEV_NULL

Credit to whom it is due.

Problem

I'm using the Apache Derby embedded database for unit testing in a Maven project. Unfortunately whenever I run the test I end up with the `derby.log` file in the root of the project. The database itself is created in the `target` directory (`jdbc:derby:target/unittest-db;create=true`) so that is not a problem. After consulting the reference guide I tried setting the `logDevice` parameter on the JDBC url (`jdbc:derby:target/unittest-db;create=true;logDevice=/mylogs`) but that seems to be for a different log, hence `derby.log` still appears. Any help is much appreciated.

Original source