Archived
1
0
Fork 0

New state: PENDING

This commit is contained in:
Mercier Pierre-Olivier 2013-10-31 16:50:04 +01:00
commit 5c3309d042

View file

@ -5,6 +5,7 @@ use strict;
use warnings; use warnings;
use Carp; use Carp;
use Data::Dumper; use Data::Dumper;
use Email::MIME;
use Exporter 'import'; use Exporter 'import';
use POSIX qw(strftime); use POSIX qw(strftime);
use Term::ANSIColor qw(:constants); use Term::ANSIColor qw(:constants);
@ -16,21 +17,26 @@ use constant {
WARN => 4, WARN => 4,
DONE => 5, DONE => 5,
USAGE => 6, USAGE => 6,
PENDING => 6.5,
INFO => 7, INFO => 7,
DEBUG => 8, DEBUG => 8,
TRACE => 9, TRACE => 9,
}; };
our @EXPORT = qw(log FATAL ALERT ERROR WARN DONE USAGE INFO DEBUG TRACE); our @EXPORT = qw(log FATAL ALERT ERROR WARN DONE USAGE PENDING INFO DEBUG TRACE);
our $display_level = 7; our $display_level = 7;
our $save_level = 9; our $save_level = 9;
our $fatal_error = 1; our $fatal_error = 1;
our $fatal_warn = 0; our $fatal_warn = 0;
our $mail_error = 0;
our $log_file = $0.".log"; our $log_file = $0.".log";
my $log_fd; my $log_fd;
my $HOSTNAME = `hostname`;
chomp($HOSTNAME);
sub log sub log
{ {
my $level = shift; my $level = shift;
@ -51,15 +57,47 @@ sub log
local $| = 1; local $| = 1;
print $log_fd strftime("%a %b %e %H:%M:%S %Y", localtime), " ", levelstr($level), " "; print $log_fd strftime("%a %b %e %H:%M:%S %Y", localtime), " ", levelstr($level), " ";
if ($level >= TRACE) { if ($level == TRACE) {
print $log_fd Dumper(@_); print $log_fd Dumper(@_);
} }
else { else {
say $log_fd @_; say $log_fd @_;
} }
} }
if ($mail_error && $level <= ERROR)
{
require "Email::Sender::Simple";
my $mail = Email::MIME->create(
header_str => [
From => "Roots assistants <root\@$HOSTNAME.acu.epita.fr>",
To => "Roots assistants <ml-root\@acu.epita.fr>",
Subject => "[LERDORF][ERROR] ".join(' ', @_)
],
body_str => "Bonjour,
Une erreur de niveau $level est survenue sur la machine $HOSTNAME.
Cette erreur est survenue lors de l'exécution du script :
$0.
Voici le contenu du message d'erreur :
".join(' ', @_)."
Cordialement,
--
The lerdorf project",
);
Email::Sender::Simple::sendmail($mail);
}
if ($level <= $display_level) { if ($level <= $display_level) {
say STDERR (leveldisp($level), @_, RESET); if ($level == PENDING) {
print STDERR (leveldisp($level), @_, RESET, "\r");
} else {
say STDERR (leveldisp($level), @_, RESET);
}
} }
if ($fatal_warn && $level <= WARN){ if ($fatal_warn && $level <= WARN){
@ -80,14 +118,14 @@ sub levelstr($)
{ {
my $level = shift; my $level = shift;
return "FATAL" if ($level == 1); return "FATAL" if ($level <= 1);
return "ALERT" if ($level == 2); return "ALERT" if ($level <= 2);
return "ERROR" if ($level == 3); return "ERROR" if ($level <= 3);
return "WARN " if ($level == 4); return "WARN " if ($level <= 4);
return "DONE " if ($level == 5); return "DONE " if ($level <= 5);
return "USAGE" if ($level == 6); return "USAGE" if ($level <= 6);
return "INFO " if ($level == 7); return "INFO " if ($level <= 7);
return "DEBUG" if ($level == 8); return "DEBUG" if ($level <= 8);
return "TRACE"; return "TRACE";
} }
@ -95,14 +133,15 @@ sub leveldisp($)
{ {
my $level = shift; my $level = shift;
return BOLD, ON_RED, YELLOW, "/!\\", RESET, " ", BOLD if ($level == 1); return BOLD, ON_RED, YELLOW, "/!\\", RESET, " ", BOLD if ($level <= 1);
return BOLD, ON_RED, ">>>", RESET, " ", BOLD if ($level == 2); return BOLD, ON_RED, ">>>", RESET, " ", BOLD if ($level <= 2);
return BOLD, RED, ">>>", RESET, " ", BOLD if ($level == 3); return BOLD, RED, ">>>", RESET, " ", BOLD if ($level <= 3);
return BOLD, YELLOW, ">>>", RESET, " ", BOLD if ($level == 4); return BOLD, YELLOW, ">>>", RESET, " ", BOLD if ($level <= 4);
return BOLD, GREEN, ">>>", RESET, " ", BOLD if ($level == 5); return BOLD, GREEN, ">>>", RESET, " ", BOLD if ($level <= 5);
return BOLD, MAGENTA, " * ", RESET, " ", BOLD if ($level == 6); return BOLD, MAGENTA, " * ", RESET, " ", BOLD if ($level <= 6);
return BOLD, CYAN, ">>>", RESET, " " if ($level < 7);
return BOLD, CYAN, " * ", RESET, " " if ($level == 7); return BOLD, CYAN, " * ", RESET, " " if ($level == 7);
return BOLD, BLUE, " % ", RESET, " " if ($level == 8); return BOLD, BLUE, " % ", RESET, " " if ($level <= 8);
return BOLD, BLUE, "#", RESET, " "; return BOLD, BLUE, "#", RESET, " ";
} }