1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
| #!/usr/bin/perl
use warnings;
use strict;
use File::Temp qw/ tempfile /;
my $file = "\\\\SERVER1\\LOGS\\logic.log";
my $date_today = date()->{date};
my $date_fichier = date( ( stat($file) )[9] )->{date};
print "Traitement fichier log\n- $file\n";
print "Le ficher date du $date_fichier\n";
# creation d'un fichier temporaire qui sera supprimé à la fin du programme
my ( $fh, $fichier_temporaire ) = tempfile( UNLINK => 1 );
close($fh);
# test si fichier est du jour (si oui traitement de parse)
if ( $date_fichier eq $date_today ) {
print "Traitement en cours, veuillez patienter ...\n";
my $commandes
= 'logparser.exe -i:TEXTLINE -o:TSV -stats:OFF' . ' "'
. ' select EXTRACT_FILENAME(LogFileName) as FichierLog, text as resultat from'
. " '\\\\SERVER1\\LOGS\\logic.log',"
. " '\\\\SERVER1\\LOGS\\logic2.log'"
. " where text like '\%\%_ERREUR\%\%'" . ' " '
. " > \"$fichier_temporaire\" ";
print "Commande lancee : \n[$commandes]\n\n";
system($commandes);
# Ouverture du fichier temporaire
open my $fh_data, '<', $fichier_temporaire or die("Impossible de lire $fichier_temporaire\n");
while ( my $Ligne = <$fh_data> ) {
chomp($Ligne);
# Si la ligne match notre regex
if ( my @motif = $Ligne =~ m/(<.+?>)/g ) {
print "$motif[1] et $motif[2]\n";
}
else {
print "[NON PARSE] $Ligne\n";
}
}
close($fh_data);
print "Fin traitement !!!\n";
}
else {
print "Traitement non deroule car le fichier ne date pas d'aujourd'hui\n";
}
sub date {
my $time = shift || time; #$time par defaut vaut le time actuel
my ( $seconde, $minute, $heure, $jour, $mois, $annee, $jour_semaine, $jour_annee, $heure_hiver_ou_ete )
= localtime($time);
$mois += 1;
$annee += 1900;
# On rajoute 0 si le chiffre est compris entre 1 et 9
foreach ( $seconde, $minute, $heure, $jour, $mois, $annee ) {
s/^(\d)$/0$1/;
}
my %date = (
"date" => "$jour-$mois-$annee",
"heure" => "$heure:$minute:$seconde",
"jour_semaine" => $jour_semaine,
"jour_annee" => $jour_annee,
"hiverOuEte" => $heure_hiver_ou_ete,
);
return \%date;
} |