diff --git a/Changes b/Changes
index 0bdeb59..2adee64 100644
--- a/Changes
+++ b/Changes
@@ -1,4 +1,7 @@
-0.41 2020-10-30
+0.42 2020-11-03
+        - Replaced Log4perl with Log::Any.
+
+0.41 2020-08-10
         - Added support for RWK annotations.
         - Improved DGD support.
         - Fixed bug in RWK support that broke on
diff --git a/Makefile.PL b/Makefile.PL
index 4b5f759..02bc475 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -14,7 +14,7 @@
     'Mojolicious'     => 7.23,
     'Packed::Array'   => 0.01,
     'Test::Output'    => 0,
-    'Log::Log4perl'   => 1.42,
+    'Log::Any'        => 1.708,
     'JSON::XS'        => 3.01,
     'Set::Scalar'     => 1.26,
     'XML::Fast'       => 0.11,
diff --git a/lib/KorAP/XML/Batch/File.pm b/lib/KorAP/XML/Batch/File.pm
index 5c1bea9..297fc06 100644
--- a/lib/KorAP/XML/Batch/File.pm
+++ b/lib/KorAP/XML/Batch/File.pm
@@ -1,6 +1,7 @@
 package KorAP::XML::Batch::File;
 use KorAP::XML::Krill;
-use Mojo::Log;
+# use Mojo::Log;
+use Log::Any qw($log);
 use IO::Compress::Gzip;
 use IO::File;
 use strict;
@@ -18,7 +19,7 @@
     foundry         => $param{foundry}   || 'Base',
     layer           => $param{layer}     || 'Tokens',
     anno            => $param{anno}      || [[]],
-    log             => $param{log}       || Mojo::Log->new(level => 'fatal'),
+    log             => $param{log}       || $log,
     koral           => $param{koral},
     non_word_tokens => $param{non_word_tokens},
     non_verbal_tokens => $param{non_verbal_tokens},
@@ -193,7 +194,7 @@
 
 =item log
 
-A L<Mojo::Log> compatible log object.
+A L<Log::Any> compatible log object.
 
 =item gzip
 
diff --git a/lib/KorAP/XML/Krill.pm b/lib/KorAP/XML/Krill.pm
index 58d8c05..17741f1 100644
--- a/lib/KorAP/XML/Krill.pm
+++ b/lib/KorAP/XML/Krill.pm
@@ -8,8 +8,7 @@
 use Try::Tiny;
 use KorAP::XML::Document::Primary;
 use KorAP::XML::Tokenizer;
-use Log::Log4perl;
-use KorAP::XML::Log;
+use Log::Any qw($log);
 use Cache::FastMmap;
 use Mojo::DOM;
 use File::Spec::Functions qw/catdir catfile catpath splitdir splitpath rel2abs/;
@@ -17,8 +16,7 @@
 
 our @EXPORT_OK = qw(get_file_name get_file_name_from_glob);
 
-
-our $VERSION = '0.41';
+our $VERSION = '0.42';
 
 has 'path';
 has [qw/text_sigle doc_sigle corpus_sigle/];
@@ -26,10 +24,6 @@
 has 'cache';
 
 has log => sub {
-  if(Log::Log4perl->initialized()) {
-    state $log = Log::Log4perl->get_logger(__PACKAGE__);
-  };
-  state $log = KorAP::XML::Log->new;
   return $log;
 };
 
@@ -64,7 +58,7 @@
 
   # No primary data found
   unless (-e $data_xml) {
-    $self->log->warn($unable . ' - no data.xml found');
+    $log->warn($unable . ' - no data.xml found');
     $error = 1;
   }
 
@@ -80,14 +74,14 @@
       $rt = xml2hash($file, text => '#text', attr => '-')->{raw_text};
 
     } catch  {
-      $self->log->warn($unable);
+      $log->warn($unable);
       $error = 1;
     };
   };
 
   return if $error;
 
-  $self->log->debug('Parse document ' . $self->path);
+  $log->debug('Parse document ' . $self->path);
 
   # Get document id and corpus id
   if ($rt && $rt->{'-docid'}) {
@@ -97,12 +91,12 @@
       $self->corpus_sigle($1);
     }
     else {
-      $self->log->warn($unable . ': ID not parseable: ' . $rt->{'-docid'});
+      $log->warn($unable . ': ID not parseable: ' . $rt->{'-docid'});
       return;
     };
   }
   else {
-    $self->log->warn($unable . ': No raw_text found or no ID');
+    $log->warn($unable . ': No raw_text found or no ID');
     return;
   };
 
@@ -116,7 +110,7 @@
   my $pd = html_unescape substr($file, $start, $end - $start);
 
   unless ($pd) {
-    $self->log->warn($unable . ': No primary data found');
+    $log->warn($unable . ': No primary data found');
     return;
   };
 
@@ -142,7 +136,7 @@
 
   if ($meta_class->can('new') || eval("require $meta_class; 1;")) {
     $meta = $meta_class->new(
-      log          => $self->log,
+      log          => $log,
       corpus_sigle => $self->corpus_sigle,
       doc_sigle    => $self->doc_sigle,
       text_sigle   => $self->text_sigle,
@@ -154,7 +148,7 @@
   };
 
   unless ($meta) {
-    $self->log->warn(
+    $log->warn(
       "Metadata object for $meta_data_type not initializable"
     );
   };
@@ -205,7 +199,7 @@
 
   # Parse tokens
   unless ($tokens->parse) {
-    $self->log->warn(
+    $log->warn(
       'Unable to tokenize ' . $self->path .
         ' with ' . $token_foundry . '#'
         . $token_layer
@@ -224,7 +218,7 @@
 sub annotate {
   my $self = shift;
   unless ($self->{tokenizer}) {
-    $self->log->warn('No tokenizer defined')
+    $log->warn('No tokenizer defined')
   }
   else {
     $self->{tokenizer}->add(@_);
@@ -294,7 +288,7 @@
 sub to_json {
   my $self = shift;
   unless ($self->{tokenizer}) {
-    $self->log->warn('No tokenizer defined');
+    $log->warn('No tokenizer defined');
     return;
   };
 
@@ -372,7 +366,7 @@
 
 =head2 log
 
-L<Log::Log4perl> object for logging.
+L<Log::Any> object for logging.
 
 =head2 path
 
diff --git a/lib/KorAP/XML/Meta/Base.pm b/lib/KorAP/XML/Meta/Base.pm
index 4a61d87..d0afe93 100644
--- a/lib/KorAP/XML/Meta/Base.pm
+++ b/lib/KorAP/XML/Meta/Base.pm
@@ -1,5 +1,6 @@
 package KorAP::XML::Meta::Base;
-use Mojo::Log;
+# use Mojo::Log;
+use Log::Any qw($log);
 use strict;
 use warnings;
 
@@ -20,7 +21,7 @@
 
 sub log {
   return $_[0]->{_log} if $_[0]->{_log};
-  $_[0]->{_log} = Mojo::Log->new;
+  $_[0]->{_log} = $log;
 };
 
 sub corpus_sigle {
diff --git a/lib/KorAP/XML/Tokenizer.pm b/lib/KorAP/XML/Tokenizer.pm
index 7e72968..3496d69 100644
--- a/lib/KorAP/XML/Tokenizer.pm
+++ b/lib/KorAP/XML/Tokenizer.pm
@@ -15,7 +15,7 @@
 use Unicode::Normalize qw/getCombinClass normalize/;
 use List::MoreUtils 'uniq';
 use JSON::XS;
-use Log::Log4perl;
+use Log::Any qw($log);
 
 # TODO 1:
 # Bei den Autoren im Index darauf achten,
@@ -40,11 +40,6 @@
 has 'error';
 
 has log => sub {
-  if (Log::Log4perl->initialized()) {
-    state $log = Log::Log4perl->get_logger(__PACKAGE__);
-    return $log;
-  };
-  state $log = KorAP::XML::Log->new;
   return $log;
 };
 
@@ -64,7 +59,7 @@
 
   unless (-e $path) {
     $self->error('Unable to load base tokenization: ' . $path);
-    $self->log->warn($self->error);
+    $log->warn($self->error);
     return;
   };
 
@@ -80,7 +75,7 @@
 
   my $old = 0;
 
-  $self->log->trace('Tokenize data ' . $self->foundry . ':' . $self->layer);
+  $log->trace('Tokenize data ' . $self->foundry . ':' . $self->layer);
 
   # TODO: Reuse the following code from Spans.pm and Tokens.pm
   my ($tokens, $error);
@@ -98,7 +93,7 @@
   } catch {
 
     $self->error('Token error in ' . $path . ($_ ? ': ' . $_ : ''));
-    $self->log->warn($self->error);
+    $log->warn($self->error);
   };
 
   return if $error;
@@ -131,7 +126,7 @@
     # Token is undefined
     unless (defined $token) {
       $self->error("Tokenization with failing offsets in $path");
-      $self->log->warn("Unable to find substring [$from-$to] in $path");
+      $log->warn("Unable to find substring [$from-$to] in $path");
       return;
     };
 
@@ -225,7 +220,7 @@
   $self->should($should);
   $self->have($have);
 
-  $self->log->debug('With a non-word quota of ' . _perc($self->should, $self->should - $self->have) . ' %');
+  $log->debug('With a non-word quota of ' . _perc($self->should, $self->should - $self->have) . ' %');
 
   return $self;
 };
@@ -298,13 +293,13 @@
   my %param = @_;
 
   unless ($self->stream) {
-    $self->log->warn(
+    $log->warn(
       'No token data available'
     );
     return;
   };
 
-  $self->log->trace(
+  $log->trace(
     ($param{skip} ? 'Skip' : 'Add').' span data '.$param{foundry}.':'.$param{layer}
   );
 
@@ -325,12 +320,12 @@
 
   my $spanarray = $spans->parse or return;
 
-  if ($self->log->is_debug) {
+  if ($log->is_debug) {
     if ($spans->should == $spans->have) {
-      $self->log->trace('With perfect alignment!');
+      $log->trace('With perfect alignment!');
     }
     else {
-      $self->log->debug('With an alignment quota of ' . _perc($spans->should, $spans->have) . ' %');
+      $log->debug('With an alignment quota of ' . _perc($spans->should, $spans->have) . ' %');
     };
   };
 
@@ -349,13 +344,13 @@
   my %param = @_;
 
   unless ($self->stream) {
-    $self->log->warn(
+    $log->warn(
       'No token data available'
     );
     return;
   };
 
-  $self->log->trace(
+  $log->trace(
     ($param{skip} ? 'Skip' : 'Add').' token data '.$param{foundry}.':'.$param{layer}
   );
   return if $param{skip};
@@ -376,15 +371,15 @@
 
   # Output some debug information
   # on token alignment
-  if ($self->log->is_debug) {
+  if ($log->is_debug) {
     if ($tokens->should == $tokens->have) {
-      $self->log->trace('With perfect alignment!');
+      $log->trace('With perfect alignment!');
     }
     else {
       my $perc = _perc(
         $tokens->should, $tokens->have, $self->should, $self->should - $self->have
       );
-      $self->log->debug('With an alignment quota of ' . $perc);
+      $log->debug('With an alignment quota of ' . $perc);
     };
   };
 
@@ -408,7 +403,7 @@
   my $layer = shift;
 
   unless ($foundry && $layer) {
-    $self->log->warn('Unable to add specific module - not enough information given!');
+    $log->warn('Unable to add specific module - not enough information given!');
     return;
   };
 
@@ -427,11 +422,11 @@
       return $retval;
     }
     else {
-      $self->log->debug('Unable to parse '.$mod);
+      $log->debug('Unable to parse '.$mod);
     };
   }
   else {
-    $self->log->warn('Unable to load '.$mod . '(' . $@ . ')');
+    $log->warn('Unable to load '.$mod . '(' . $@ . ')');
   };
 
   return;
diff --git a/lib/KorAP/XML/Tokenizer/Spans.pm b/lib/KorAP/XML/Tokenizer/Spans.pm
index 2722aec..281013e 100644
--- a/lib/KorAP/XML/Tokenizer/Spans.pm
+++ b/lib/KorAP/XML/Tokenizer/Spans.pm
@@ -1,7 +1,6 @@
 package KorAP::XML::Tokenizer::Spans;
 use strict;
 use warnings;
-use KorAP::XML::Log;
 use Data::Dumper;
 use Mojo::Base 'KorAP::XML::Tokenizer::Units';
 use Mojo::File;
@@ -9,15 +8,12 @@
 use Mojo::ByteStream 'b';
 use XML::Fast;
 use Try::Tiny;
+use Log::Any qw($log);
 
 has 'range';
 
 has 'log' => sub {
-  if(Log::Log4perl->initialized()) {
-    state $log = Log::Log4perl->get_logger(__PACKAGE__);
-  };
-  state $log = KorAP::XML::Log->new;
-  return $log;
+  $log;
 };
 
 
diff --git a/lib/KorAP/XML/Tokenizer/Tokens.pm b/lib/KorAP/XML/Tokenizer/Tokens.pm
index 50367d4..78e3f8e 100644
--- a/lib/KorAP/XML/Tokenizer/Tokens.pm
+++ b/lib/KorAP/XML/Tokenizer/Tokens.pm
@@ -6,9 +6,10 @@
 use File::Spec::Functions qw/catdir catfile/;
 use XML::Fast;
 use Try::Tiny;
+use Log::Any qw($log);
 
 has 'log' => sub {
-  Log::Log4perl->get_logger(__PACKAGE__)
+  $log;
 };
 
 sub parse {
@@ -50,7 +51,7 @@
     };
     $spans = xml2hash($file, text => '#text', attr => '-')->{layer}->{spanList};
   } catch  {
-    $self->log->warn('Span error in ' . $path . ($_ ? ': ' . $_ : ''));
+    $log->warn('Span error in ' . $path . ($_ ? ': ' . $_ : ''));
     $error = 1;
   };
 
diff --git a/script/korapxml2krill b/script/korapxml2krill
index 9b79b47..ab68d96 100644
--- a/script/korapxml2krill
+++ b/script/korapxml2krill
@@ -9,7 +9,8 @@
 use Benchmark qw/:hireswallclock/;
 use IO::Compress::Gzip qw/$GzipError/;
 use POSIX qw/ceil/;
-use Log::Log4perl;
+use Log::Any qw($log);
+use Log::Any::Adapter;
 use Pod::Usage;
 use Cache::FastMmap;
 use Directory::Iterator;
@@ -152,7 +153,7 @@
 # - Added support for Redewiedergabe-Korpus morphology
 # ----------------------------------------------------------
 
-our $LAST_CHANGE = '2020/08/07';
+our $LAST_CHANGE = '2020/10/21';
 our $LOCAL = $FindBin::Bin;
 our $KORAL_VERSION = 0.03;
 our $VERSION_MSG = <<"VERSION";
@@ -293,15 +294,9 @@
 my %skip;
 $skip{lc($_)} = 1 foreach @skip;
 
-# Initialize log4perl object
-Log::Log4perl->init({
-  'log4perl.rootLogger' => uc($cfg{log} // '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'
-});
-
-my $log = Log::Log4perl->get_logger('main');
+Log::Any::Adapter->set(
+  'Stderr', log_level => uc($cfg{log} // 'ERROR')
+);
 
 if ($cmd && $output && (!defined($to_tar)) && (!-e $output || !-d $output)) {
   $log->error("Directory '$output' does not exist.");
@@ -1321,7 +1316,7 @@
 
 =item B<--log|-l>
 
-The L<Log4perl> log level, defaults to C<ERROR>.
+The L<Log::Any> log level, defaults to C<ERROR>.
 
 
 =item B<--help|-h>
diff --git a/t/annotation/malt_dependency.t b/t/annotation/malt_dependency.t
index cbbbf27..44a4a11 100644
--- a/t/annotation/malt_dependency.t
+++ b/t/annotation/malt_dependency.t
@@ -3,15 +3,6 @@
 use warnings;
 use KorAP::XML::Annotation::Malt::Dependency;
 use utf8;
-use Log::Log4perl;
-
-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 Test::More;
 use Scalar::Util qw/weaken/;
 use Data::Dumper;
diff --git a/t/annotation/mdp_dependency.t b/t/annotation/mdp_dependency.t
index 2fd341f..f7f29a2 100644
--- a/t/annotation/mdp_dependency.t
+++ b/t/annotation/mdp_dependency.t
@@ -2,16 +2,7 @@
 use strict;
 use warnings;
 use utf8;
-use Log::Log4perl;
 use Data::Dumper;
-
-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 File::Basename 'dirname';
 use File::Spec::Functions qw/catdir catfile/;
 use Test::More;
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');
 
 
