New state: PENDING
This commit is contained in:
parent
ae330ab897
commit
5c3309d042
1 changed files with 57 additions and 18 deletions
75
ACU/Log.pm
75
ACU/Log.pm
|
@ -5,6 +5,7 @@ use strict;
|
|||
use warnings;
|
||||
use Carp;
|
||||
use Data::Dumper;
|
||||
use Email::MIME;
|
||||
use Exporter 'import';
|
||||
use POSIX qw(strftime);
|
||||
use Term::ANSIColor qw(:constants);
|
||||
|
@ -16,21 +17,26 @@ use constant {
|
|||
WARN => 4,
|
||||
DONE => 5,
|
||||
USAGE => 6,
|
||||
PENDING => 6.5,
|
||||
INFO => 7,
|
||||
DEBUG => 8,
|
||||
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 $save_level = 9;
|
||||
our $fatal_error = 1;
|
||||
our $fatal_warn = 0;
|
||||
our $mail_error = 0;
|
||||
|
||||
our $log_file = $0.".log";
|
||||
my $log_fd;
|
||||
|
||||
my $HOSTNAME = `hostname`;
|
||||
chomp($HOSTNAME);
|
||||
|
||||
sub log
|
||||
{
|
||||
my $level = shift;
|
||||
|
@ -51,15 +57,47 @@ sub log
|
|||
local $| = 1;
|
||||
print $log_fd strftime("%a %b %e %H:%M:%S %Y", localtime), " ", levelstr($level), " ";
|
||||
|
||||
if ($level >= TRACE) {
|
||||
if ($level == TRACE) {
|
||||
print $log_fd Dumper(@_);
|
||||
}
|
||||
else {
|
||||
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) {
|
||||
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){
|
||||
|
@ -80,14 +118,14 @@ sub levelstr($)
|
|||
{
|
||||
my $level = shift;
|
||||
|
||||
return "FATAL" if ($level == 1);
|
||||
return "ALERT" if ($level == 2);
|
||||
return "ERROR" if ($level == 3);
|
||||
return "WARN " if ($level == 4);
|
||||
return "DONE " if ($level == 5);
|
||||
return "USAGE" if ($level == 6);
|
||||
return "INFO " if ($level == 7);
|
||||
return "DEBUG" if ($level == 8);
|
||||
return "FATAL" if ($level <= 1);
|
||||
return "ALERT" if ($level <= 2);
|
||||
return "ERROR" if ($level <= 3);
|
||||
return "WARN " if ($level <= 4);
|
||||
return "DONE " if ($level <= 5);
|
||||
return "USAGE" if ($level <= 6);
|
||||
return "INFO " if ($level <= 7);
|
||||
return "DEBUG" if ($level <= 8);
|
||||
return "TRACE";
|
||||
}
|
||||
|
||||
|
@ -95,14 +133,15 @@ sub leveldisp($)
|
|||
{
|
||||
my $level = shift;
|
||||
|
||||
return BOLD, ON_RED, YELLOW, "/!\\", RESET, " ", BOLD if ($level == 1);
|
||||
return BOLD, ON_RED, ">>>", RESET, " ", BOLD if ($level == 2);
|
||||
return BOLD, RED, ">>>", RESET, " ", BOLD if ($level == 3);
|
||||
return BOLD, YELLOW, ">>>", RESET, " ", BOLD if ($level == 4);
|
||||
return BOLD, GREEN, ">>>", RESET, " ", BOLD if ($level == 5);
|
||||
return BOLD, MAGENTA, " * ", RESET, " ", BOLD if ($level == 6);
|
||||
return BOLD, ON_RED, YELLOW, "/!\\", RESET, " ", BOLD if ($level <= 1);
|
||||
return BOLD, ON_RED, ">>>", RESET, " ", BOLD if ($level <= 2);
|
||||
return BOLD, RED, ">>>", RESET, " ", BOLD if ($level <= 3);
|
||||
return BOLD, YELLOW, ">>>", RESET, " ", BOLD if ($level <= 4);
|
||||
return BOLD, GREEN, ">>>", RESET, " ", BOLD if ($level <= 5);
|
||||
return BOLD, MAGENTA, " * ", RESET, " ", BOLD if ($level <= 6);
|
||||
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, " ";
|
||||
}
|
||||
|
||||
|
|
Reference in a new issue