diff --git a/build.gradle b/build.gradle
index ba5ae26b1a4dfc3af0bc97cad7764ec7882478ed..3151c067ff90905b79e258f37e70a9fc72df2017 100644
--- a/build.gradle
+++ b/build.gradle
@@ -22,8 +22,8 @@ dependencies {
     testImplementation 'org.junit.jupiter:junit-jupiter-api:5.4.0'
     testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.4.0'
     compile group: 'net.sf.beaver', name: 'beaver-rt', version: '0.9.11'
-//    compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.10.0'
-//    compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.10.0'
+    compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.10.0'
+    compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.10.0'
 }
 
 sourceSets {
@@ -100,5 +100,6 @@ jastadd {
 
 
 test {
+    outputs.upToDateWhen { false }
     useJUnitPlatform()
 }
\ No newline at end of file
diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml
new file mode 100644
index 0000000000000000000000000000000000000000..98cfd73c75df58d8598521bc10b043e214ec4ad8
--- /dev/null
+++ b/src/main/resources/log4j2.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Configuration status="INFO">
+    <Appenders>
+        <Console name="Console" target="SYSTEM_OUT">
+            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
+        </Console>
+    </Appenders>
+    <Loggers>
+        <Root level="info">
+            <AppenderRef ref="Console"/>
+        </Root>
+    </Loggers>
+</Configuration>
\ No newline at end of file
diff --git a/src/test/jastadd/errors/.gitignore b/src/test/jastadd/errors/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..fa929750c2d8892c7aa0c375e397e1d450780a7c
--- /dev/null
+++ b/src/test/jastadd/errors/.gitignore
@@ -0,0 +1 @@
+*.out
\ No newline at end of file
diff --git a/tests/errors/Errors.expected b/src/test/jastadd/errors/Errors.expected
similarity index 100%
rename from tests/errors/Errors.expected
rename to src/test/jastadd/errors/Errors.expected
diff --git a/tests/errors/Errors.relast b/src/test/jastadd/errors/Errors.relast
similarity index 100%
rename from tests/errors/Errors.relast
rename to src/test/jastadd/errors/Errors.relast
diff --git a/tests/errors/Inheritance.expected b/src/test/jastadd/errors/Inheritance.expected
similarity index 100%
rename from tests/errors/Inheritance.expected
rename to src/test/jastadd/errors/Inheritance.expected
diff --git a/tests/errors/Inheritance.relast b/src/test/jastadd/errors/Inheritance.relast
similarity index 100%
rename from tests/errors/Inheritance.relast
rename to src/test/jastadd/errors/Inheritance.relast
diff --git a/src/test/java/org/jastadd/relast/tests/errors/Errors.java b/src/test/java/org/jastadd/relast/tests/errors/Errors.java
new file mode 100644
index 0000000000000000000000000000000000000000..67d005a3e29582856d51f2cf25c0e2f5c53114b2
--- /dev/null
+++ b/src/test/java/org/jastadd/relast/tests/errors/Errors.java
@@ -0,0 +1,95 @@
+package org.jastadd.relast.tests.errors;
+
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.jastadd.relast.compiler.Compiler;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.charset.Charset;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+
+
+public class Errors {
+
+  private static final Logger logger = LogManager.getLogger(Errors.class);
+
+  static String readFile(String path, Charset encoding)
+      throws IOException {
+    byte[] encoded = Files.readAllBytes(Paths.get(path));
+    return new String(encoded, encoding);
+  }
+
+  static int exec(Class klass, String[] args, File err) throws IOException,
+      InterruptedException {
+    String javaHome = System.getProperty("java.home");
+    String javaBin = javaHome + File.separator + "bin" + File.separator + "java";
+    String classpath = System.getProperty("java.class.path");
+    String className = klass.getName();
+
+    String[] newArgs = new String[args.length + 4];
+    newArgs[0] = javaBin;
+    newArgs[1] = "-cp";
+    newArgs[2] = classpath;
+    newArgs[3] = className;
+    System.arraycopy(args, 0, newArgs, 4, args.length);
+
+    ProcessBuilder builder = new ProcessBuilder(newArgs);
+    builder.redirectError(err);
+
+    Process process = builder.start();
+    process.waitFor();
+    return process.exitValue();
+  }
+
+  @Test
+  void test1() throws IOException {
+
+    String inFile = "./src/test/jastadd/errors/Errors.relast";
+    String outFile = "./src/test/jastadd/errors/Errors.out";
+    String expectedFile = "./src/test/jastadd/errors/Errors.expected";
+
+    try {
+      System.out.println(System.getProperty("user.dir"));
+      int returnValue = exec(Compiler.class, new String[]{inFile}, new File(outFile));
+      Assertions.assertEquals(1, returnValue, "Relast did not return with value 1");
+    } catch (IOException | InterruptedException e) {
+      e.printStackTrace();
+    }
+
+    String out = readFile(outFile, Charset.defaultCharset());
+    String expected = readFile(expectedFile, Charset.defaultCharset());
+
+    Assertions.assertEquals(out, expected);
+
+    logger.info("'relast Errors.relast' returned \n{}", out);
+  }
+
+  @Test
+  void test2() throws IOException {
+
+    String inFile = "./src/test/jastadd/errors/Inheritance.relast";
+    String outFile = "./src/test/jastadd/errors/Inheritance.out";
+    String expectedFile = "./src/test/jastadd/errors/Inheritance.expected";
+
+    try {
+      System.out.println(System.getProperty("user.dir"));
+      int returnValue = exec(Compiler.class, new String[]{inFile}, new File(outFile));
+      Assertions.assertEquals(1, returnValue, "Relast did not return with value 1");
+    } catch (IOException | InterruptedException e) {
+      e.printStackTrace();
+    }
+
+    String out = readFile(outFile, Charset.defaultCharset());
+    String expected = readFile(expectedFile, Charset.defaultCharset());
+
+    Assertions.assertEquals(out, expected);
+
+    logger.info("'relast Inheritance.relast' returned \n{}", out);
+  }
+
+
+}
diff --git a/tests/errors/.gitignore b/tests/errors/.gitignore
deleted file mode 100644
index e87afd97c3b381b83d7829594d887e153a4534e7..0000000000000000000000000000000000000000
--- a/tests/errors/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/*.out
diff --git a/tests/errors/Makefile b/tests/errors/Makefile
deleted file mode 100644
index 11d492d2fc0ef05a9af8a52851935ac6a5f8622b..0000000000000000000000000000000000000000
--- a/tests/errors/Makefile
+++ /dev/null
@@ -1,14 +0,0 @@
-all: build-jar test
-
-build-jar:
-	(cd ../../ && ./gradlew jar)
-test:
-	java -jar ../../build/libs/relast.jar Errors.relast 2> Errors.out || true
-	diff Errors.out Errors.expected
-
-	java -jar ../../build/libs/relast.jar Inheritance.relast 2> Inheritance.out || true
-	diff Inheritance.out Inheritance.expected
-
-	@echo "#"
-	@echo "# ERROR TESTS OK"
-	@echo "#"