Guest User

Untitled

a guest
Oct 15th, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 3.81 KB | None | 0 0
  1.  
  2.  
  3.  
  4.  
  5.         package logger;
  6.  
  7.         require Exporter;
  8.         our $VERSION   = 1.00;
  9.         our @ISA       = qw|Exporter|;
  10.         our @EXPORT    = qw|log_black log_red log_green|;
  11.         our @EXPORT_OK = qw||;
  12.  
  13.  
  14.  
  15.  
  16.         use strict;      use DateTime;            use TermSize;
  17.         use warnings;    use Text::Wrap;
  18.         use v5.10;       use Term::ANSIColor;
  19.                          use IO::File;
  20.  
  21.  
  22.         my $CCL = 9; # color code length, i.e length(colored('A')) - length('A') = 9;
  23.         my $LTZ = DateTime::TimeZone->new(name => 'local');
  24.         my ($cols, $rows) = Term::Size::chars *STDERR{IO};
  25.         $Text::Wrap::columns = $cols;
  26.  
  27.         my $default_file_name = 'when_and_what_happend.txt';
  28.         my $color_black = 'bright_black';
  29.         my $color_red   = 'bright_red';
  30.         my $color_green = 'bright_green';
  31.  
  32.         if (!-d './log/') { mkdir('log', 0700); }
  33.         my $file;# = IO::File->new(">> ./log/$default_file_name");
  34.  
  35.         # sub import
  36.         # {
  37.         #     my @args = splice @_, 1;
  38.         #     my $fn = $args[0] || $default_file_name;
  39.         #     $file = IO::File->new(">> ./log/$fn");
  40.  
  41.         #     goto &Exporter::import;
  42.         # }  
  43.  
  44.         sub import
  45.         {
  46.             my @args = splice @_, 1;
  47.             my $fn = $args[0] || $default_file_name;
  48.             $file = IO::File->new(">> ./log/$fn");
  49.             say $fn;
  50.             say __PACKAGE__;
  51.            
  52.             __PACKAGE__->export_to_level(1, @EXPORT);
  53.         }
  54.  
  55.         sub prefix
  56.         {
  57.             my $dt = DateTime->now(time_zone => $LTZ);
  58.             my $prefix = ""; my $pcp = 0; # prefix colored parts
  59.             $prefix .= colored(["bright_red"], '[');                           $pcp++;
  60.             $prefix .= colored(["bright_blue"], $dt->year);                    $pcp++;
  61.             $prefix .= colored(["bright_red"], '.');                           $pcp++;
  62.             $prefix .= colored(["bright_blue"], sprintf("%02d", $dt->month));  $pcp++;
  63.             $prefix .= colored(["bright_red"], '.');                           $pcp++;
  64.             $prefix .= colored(["bright_blue"], sprintf("%02d", $dt->day));    $pcp++;
  65.             $prefix .= colored(["cyan"],       ' | ');                         $pcp++;
  66.             $prefix .= colored(["bright_blue"], sprintf("%02d", $dt->hour));   $pcp++;
  67.             $prefix .= colored(["bright_red"],  ':');                          $pcp++;
  68.             $prefix .= colored(["bright_blue"], sprintf("%02d", $dt->minute)); $pcp++;
  69.             $prefix .= colored(["bright_red"],  ':');                          $pcp++;
  70.             $prefix .= colored(["bright_blue"], sprintf("%02d", $dt->second)); $pcp++;
  71.             $prefix .= colored(["bright_red"], '] ');                          $pcp++;
  72.             return ($prefix, $pcp);
  73.         }
  74.  
  75.         sub log_black
  76.         {
  77.             my ($prefix, $pcp) = prefix();
  78.             my @line = @_;
  79.             print $file $prefix;
  80.             @line = map { colored(["$color_black"], $_); } @line;
  81.             say $file wrap("\0" x (length($prefix) - $CCL * $pcp), " " x (length($prefix) - $CCL * $pcp), @line);
  82.         }
  83.  
  84.         sub log_red
  85.         {
  86.             my ($prefix, $pcp) = prefix();
  87.             my @line = @_;
  88.             print $file $prefix;
  89.             @line = map { colored(["$color_red"], $_); } @line;
  90.             say $file wrap("\0" x (length($prefix) - $CCL * $pcp), " " x (length($prefix) - $CCL * $pcp), @line);
  91.         }
  92.  
  93.         sub log_green
  94.         {
  95.             my ($prefix, $pcp) = prefix();
  96.             my @line = @_;
  97.             print $file $prefix;
  98.             @line = map { colored(["$color_green"], $_); } @line;
  99.             say $file wrap("\0" x (length($prefix) - $CCL * $pcp), " " x (length($prefix) - $CCL * $pcp), @line);
  100.         }
  101.  
  102.  
  103.  
  104.  
  105.  
  106. 1
Add Comment
Please, Sign In to add comment