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