diff --git a/t/real/agd.t b/t/real/agd.t
index ebb658b..c1f8cc5 100644
--- a/t/real/agd.t
+++ b/t/real/agd.t
@@ -3,7 +3,6 @@
 use Test::More;
 use Data::Dumper;
 use JSON::XS;
-use Log::Log4perl;
 use utf8;
 
 if ($ENV{SKIP_REAL}) {
@@ -14,15 +13,6 @@
 
 my $t = Benchmark->new;
 
-# Initialize log4perl object
-#Log::Log4perl->init({
-#  'log4perl.rootLogger' => 'TRACE, STDERR',
-#  'log4perl.appender.STDERR' => 'Log::Log4perl::Appender::ScreenColoredLevels',
-#  'log4perl.appender.STDERR.layout' => 'PatternLayout',
-#  'log4perl.appender.STDERR.layout.ConversionPattern' => '[%r] %F %L %c - %m%n'
-#});
-
-
 use File::Basename 'dirname';
 use File::Spec::Functions 'catdir';
 
diff --git a/t/real/bzk.t b/t/real/bzk.t
index 8636fb9..8c0d16e 100644
--- a/t/real/bzk.t
+++ b/t/real/bzk.t
@@ -3,7 +3,6 @@
 use Test::More;
 use Data::Dumper;
 use JSON::XS;
-use Log::Log4perl;
 
 if ($ENV{SKIP_REAL}) {
   plan skip_all => 'Skip real tests';
@@ -16,13 +15,6 @@
 use utf8;
 use lib 'lib', '../lib';
 
-#Log::Log4perl->init({
-#  'log4perl.rootLogger' => 'DEBUG, STDERR',
-#  'log4perl.appender.STDERR' => 'Log::Log4perl::Appender::ScreenColoredLevels',
-#  'log4perl.appender.STDERR.layout' => 'PatternLayout',
-#  'log4perl.appender.STDERR.layout.ConversionPattern' => '[%r] %F %L %c - %m%n'
-#});
-
 use File::Basename 'dirname';
 use File::Spec::Functions 'catdir';
 
diff --git a/t/real/ngafc.t b/t/real/ngafc.t
index 04eb4a1..95eabc4 100644
--- a/t/real/ngafc.t
+++ b/t/real/ngafc.t
@@ -13,7 +13,6 @@
 use Test::More;
 use Data::Dumper;
 use JSON::XS;
-use Log::Log4perl;
 
 if ($ENV{SKIP_REAL}) {
   plan skip_all => 'Skip real tests';
diff --git a/t/real/rei.t b/t/real/rei.t
index ab3df72..6593258 100644
--- a/t/real/rei.t
+++ b/t/real/rei.t
@@ -3,7 +3,6 @@
 use Test::More;
 use Data::Dumper;
 use JSON::XS;
-use Log::Log4perl;
 
 if ($ENV{SKIP_REAL}) {
   plan skip_all => 'Skip real tests';
@@ -15,14 +14,6 @@
 use File::Basename 'dirname';
 use File::Spec::Functions 'catdir';
 
-# Initialize log4perl object
-Log::Log4perl->init({
-  'log4perl.rootLogger' => 'ERROR, STDERR',
-  'log4perl.appender.STDERR' => 'Log::Log4perl::Appender::ScreenColoredLevels',
-  'log4perl.appender.STDERR.layout' => 'PatternLayout',
-  'log4perl.appender.STDERR.layout.ConversionPattern' => '[%r] %F %L %c - %m%n'
-});
-
 use_ok('KorAP::XML::Krill');
 
 my $path = catdir(dirname(__FILE__), 'corpus','REI','BNG','00128');
diff --git a/t/real/rwk.t b/t/real/rwk.t
index 7e5642d..efc0b94 100644
--- a/t/real/rwk.t
+++ b/t/real/rwk.t
@@ -3,7 +3,6 @@
 use Test::More;
 use Data::Dumper;
 use JSON::XS;
-use Log::Log4perl;
 
 if ($ENV{SKIP_REAL}) {
   plan skip_all => 'Skip real tests';
@@ -15,14 +14,6 @@
 use File::Basename 'dirname';
 use File::Spec::Functions 'catdir';
 
-# Initialize log4perl object
-Log::Log4perl->init({
-  'log4perl.rootLogger' => 'ERROR, STDERR',
-  'log4perl.appender.STDERR' => 'Log::Log4perl::Appender::ScreenColoredLevels',
-  'log4perl.appender.STDERR.layout' => 'PatternLayout',
-  'log4perl.appender.STDERR.layout.ConversionPattern' => '[%r] %F %L %c - %m%n'
-});
-
 use_ok('KorAP::XML::Krill');
 
 my $path = catdir(dirname(__FILE__), 'corpus','REDEW','DOC1','00000');
@@ -200,16 +191,6 @@
 
 is(substr($output->{data}->{text}, 0, 100), 'Er hatte den Kopf weit nach rückwärts gebeugt, seine langen schwarzen Haare lockten sich über den li', 'Primary Data');
 
-use Log::Log4perl;
-
-Log::Log4perl->init({
-  'log4perl.rootLogger' => 'WARN, STDERR',
-  'log4perl.appender.STDERR' => 'Log::Log4perl::Appender::ScreenColoredLevels',
-  'log4perl.appender.STDERR.layout' => 'PatternLayout',
-  'log4perl.appender.STDERR.layout.ConversionPattern' => '[%r] %F %L %c - %m%n'
-});
-
-
 # Add annotations
 ok($tokens->add('RWK', 'Morpho'));
 ok($tokens->add('RWK', 'Structure'));
@@ -286,16 +267,6 @@
 
 is(substr($output->{data}->{text}, 0, 100), 'Er hatte den Kopf weit nach rückwärts gebeugt, seine langen schwarzen Haare lockten sich über den li', 'Primary Data');
 
-use Log::Log4perl;
-
-Log::Log4perl->init({
-  'log4perl.rootLogger' => 'WARN, STDERR',
-  'log4perl.appender.STDERR' => 'Log::Log4perl::Appender::ScreenColoredLevels',
-  'log4perl.appender.STDERR.layout' => 'PatternLayout',
-  'log4perl.appender.STDERR.layout.ConversionPattern' => '[%r] %F %L %c - %m%n'
-});
-
-
 # Add annotations
 ok($tokens->add('RWK', 'Morpho'));
 ok($tokens->add('RWK', 'Structure'));
diff --git a/t/real/wdd.t b/t/real/wdd.t
index 57dcbc7..779a44e 100644
--- a/t/real/wdd.t
+++ b/t/real/wdd.t
@@ -1,4 +1,4 @@
-#use strict;
+use strict;
 use warnings;
 use Test::More;
 use Data::Dumper;
@@ -293,14 +293,6 @@
 );
 ok($tokens, 'Token Object is fine');
 
-# Initialize log4perl object
-Log::Log4perl->init({
-  'log4perl.rootLogger' => 'DEBUG, STDERR',
-  'log4perl.appender.STDERR' => 'Log::Log4perl::Appender::ScreenColoredLevels',
-  'log4perl.appender.STDERR.layout' => 'PatternLayout',
-  'log4perl.appender.STDERR.layout.ConversionPattern' => '[%r] %F %L %c - %m%n'
-});
-
 ok(!$tokens->parse, 'Token parsing is fine');
 
 
