diff --git a/script/tei2korapxml b/script/tei2korapxml
index 280cacc..da2cec6 100755
--- a/script/tei2korapxml
+++ b/script/tei2korapxml
@@ -2,6 +2,8 @@
 use strict;
 use warnings;
 
+use Log::Any '$log';
+use Log::Any::Adapter;
 use Pod::Usage;
 use Getopt::Long qw(GetOptions :config no_auto_abbrev);
 
@@ -38,6 +40,7 @@
   "input|i=s" => \(my $input_fname = ''), # input file (yet only TEI I5 Format accepted)
   'tokenizer-call|tc=s' => \(my $tokenizer_call), # Temporary argument for testing purposes
   'use-intern-tokenization|ti' => \(my $tokenizer_intern), # use intern tokenization (default = no)
+  'log|l=s' => \(my $log_level = 'notice'),
   'help|h'    => sub {
     pod2usage(
       -verbose => 99,
@@ -55,6 +58,8 @@
   }
 );
 
+Log::Any::Adapter->set('Stderr', log_level => $log_level);
+
 #
 # ~~~ parameter (mandatory) ~~~
 #
@@ -348,7 +353,9 @@
         # which are counted as 1 (search for '&amp;' in data.xml and see
         # corresponding indices in $_tokens_file)
 
-        print STDERR "DEBUG ($0): main(): Writing (utf8-formatted) xml file $_root_dir$dir/$_data_file\n" if $_DEBUG;
+        if ($_DEBUG) {
+          $log->debug("Writing (utf8-formatted) xml file $_root_dir$dir/$_data_file");
+        };
 
         $zipper->new_stream("$_root_dir$dir/$_data_file")
           ->print("$data_prfx1$text_id_esc$data_prfx2$data$data_sfx");
@@ -373,10 +380,7 @@
         $data_fl = 0; $buf_in = $data = $dir = ""; # reinit.
 
       } else { # $dir eq ""
-
-        print STDERR "WARNING ($0): main(): maybe empty textSigle => skipping this text ...\n";
-        # print STDERR "WARNING ($0): main(): text header=$header_txt\n";
-        print STDERR "WARNING ($0): main(): data=$data\n";
+        $log->warn("Maybe empty textSigle => skipping this text ...\ndata=$data");
       }
 
     } elsif ( $data_fl ){
@@ -465,7 +469,7 @@
         # Write header to zip
         my $file = $_root_dir . $header->dir . '/' . $_header_file;
 
-        print STDERR "DEBUG ($0): Writing file $file\n" if $_DEBUG;
+        $log->debug("Writing file $file") if $_DEBUG;
 
         $header->to_zip($zipper->new_stream($file));
 
@@ -478,7 +482,7 @@
           $text_id_esc = $header->id_esc;
 
           # log output for seeing progression
-          print STDERR "$0: main(): text_id=".decode("UTF-8", $text_id )."\n";
+          $log->notice("$0: main(): text_id=".decode('UTF-8', $text_id ));
 
           $tl = 0; # reset (needed for ~ whitespace handling ~)
         };
@@ -869,8 +873,7 @@
   #print STDERR "$0: write_structures(): ...\n";
 
   if ( $dir eq "" ){
- 
-   print STDERR "WARNING ($0): write_structures(): empty textSigle => nothing to do ...\n";
+    $log->warn("write_structures(): empty textSigle => nothing to do ...");
     return;
   }
 
@@ -1061,6 +1064,10 @@
 that will take an I<Aggressive> and a I<conservative>
 approach.
 
+=item B<--log|-l>
+
+Loglevel for I<Log::Any>. Defaults to C<notice>.
+
 =back
 
 =head1 COPYRIGHT AND LICENSE
diff --git a/t/script.t b/t/script.t
index 552f983..4254937 100644
--- a/t/script.t
+++ b/t/script.t
@@ -391,4 +391,14 @@
   ok($zip, 'found structure.xml');
 };
 
+
+subtest 'Test Log' => sub {
+  test_tei2korapxml(
+    tmp => 'script_out',
+    file => $file,
+    param => '-l=warn'
+  )->stderr_is('');
+};
+
+
 done_testing;
