112 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
			
		
		
	
	
			112 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Perl
		
	
	
	
	
	
| #!/usr/bin/perl
 | |
| 
 | |
| #############################################################################
 | |
| # $Id$
 | |
| #############################################################################
 | |
| # Log: Piler exported EML backup (pilerbackup, Logwatch group 'pilerbackup')
 | |
| # Revision 1.1  2019/07/20
 | |
| # Written by Asif Bacchus
 | |
| #############################################################################
 | |
| 
 | |
| 
 | |
| use strict;
 | |
| 
 | |
| ### Get Logwatch detail level (default to 0)
 | |
| my $detailLevel = $ENV{'LOGWATCH_DETAIL_LEVEL'} || 0;
 | |
| 
 | |
| 
 | |
| ### Declare variables
 | |
| my $summaryErr;
 | |
| my $summaryWarn;
 | |
| my $summarySuccess;
 | |
| 
 | |
| my %reportHash = ();
 | |
| my $key;
 | |
| 
 | |
| 
 | |
| ### Minimal detail level: provide summary data only
 | |
| if ($detailLevel == 0) {
 | |
|     ### process logfile and summarize message types
 | |
|     while (defined(my $ThisLine = <STDIN>)) {
 | |
|         if ($ThisLine =~ /\-- \[ERROR\] /) {
 | |
|             $summaryErr++;
 | |
|         }
 | |
|         elsif ($ThisLine =~ /\-- \[WARNING\] /) {
 | |
|             $summaryWarn++;
 | |
|         }
 | |
|         elsif ($ThisLine =~ /All processes completed/) {
 | |
|             $summarySuccess++;
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     ### fill hash table with headings and summary counts
 | |
|     if ($summarySuccess > 0) {
 | |
|         $reportHash{"All processes successfully completed"} = $summarySuccess;
 | |
|     }
 | |
|     if ($summaryWarn > 0) {
 | |
|         $reportHash{"Warnings issued"} = $summaryWarn;
 | |
|     }
 | |
|     if ($summaryErr > 0) {
 | |
|         $reportHash{"Errors encountered"} = $summaryErr;
 | |
|     }
 | |
| 
 | |
|     ### print hash table
 | |
|     foreach $key (sort keys %reportHash) {
 | |
|         print "$key: $reportHash{$key}\n";
 | |
|     }
 | |
| }
 | |
| ### Levels 1-4 provide the actual error, warning and success messages instead
 | |
| ### of a summary count
 | |
| elsif ($detailLevel >= 1 && $detailLevel <= 4) {
 | |
|     while (defined(my $ThisLine = <STDIN>)) {
 | |
|         if ($ThisLine =~ /\-- \[ERROR\] /) {
 | |
|             print $ThisLine;
 | |
|         }
 | |
|         elsif ($ThisLine =~ /\-- \[WARNING\] /) {
 | |
|             print $ThisLine;
 | |
|         }
 | |
|         elsif ($ThisLine =~ /\-- \[SUCCESS\] /) {
 | |
|             print $ThisLine;
 | |
|         }
 | |
|     }
 | |
| }
 | |
| ### Level 5 is similiar to levels 1-4 except it also reports informational
 | |
| ### messages such as the location of script created files, variable checks,
 | |
| ### etc. This is useful when verifying the script's operation.
 | |
| elsif ($detailLevel == 5) {
 | |
|     while (defined(my $ThisLine = <STDIN>)) {
 | |
|         if ($ThisLine =~ /\-- \[ERROR\] /) {
 | |
|             print $ThisLine;
 | |
|         }
 | |
|         elsif ($ThisLine =~ /\-- \[WARNING\] /) {
 | |
|             print $ThisLine;
 | |
|         }
 | |
|         elsif ($ThisLine =~ /\-- \[SUCCESS\] /) {
 | |
|             print $ThisLine;
 | |
|         }
 | |
|         elsif ($ThisLine =~ /\-- \[INFO\] /) {
 | |
|             print $ThisLine;
 | |
|         }
 | |
|     }
 | |
| }
 | |
| ### Any level above 5 will echo the entire log including the debugging notes
 | |
| ### within the script meant for troubleshooting.  Using this level of detail
 | |
| ### should only be done if you cannot view the actual log file directly for
 | |
| ### whatever reason.  The actual log file is colour-coded for easier debugging.
 | |
| elsif ($detailLevel > 5) {
 | |
|     while (defined(my $ThisLine = <STDIN>)) {
 | |
|         print $ThisLine;
 | |
|     }
 | |
| }
 | |
| 
 | |
| 
 | |
| 
 | |
| ### Exit gracefully
 | |
| exit (0);
 | |
| 
 | |
| # vi: shiftwidth=3 tabstop=3 et
 | |
| # Local Variables:
 | |
| # mode: perl
 | |
| # perl-indent-level: 3
 | |
| # indent-tabs-mode: nil
 | |
| # End: |