diff --git a/logwatch/conf/logfiles/backup.conf b/logwatch/conf/logfiles/backup.conf new file mode 100644 index 0000000..ed36c40 --- /dev/null +++ b/logwatch/conf/logfiles/backup.conf @@ -0,0 +1,13 @@ +# Location of your script's log file, -l parameter +LogFile = /path/to/your/backup.log + +# Format of logrotate archives for your script. Example assumes compression and +# extension preservation +Archive = /path/to/your/logfile.ext.?.gz + +# Apply the correct date/time filtering to match the format of the script's log +# We are using a custom pl script in /etc/logwatch/scripts/shared/ You don't +# need to change this unless you have altered the 'stamp' function in the backup +# script in which case you will want to update the regex in the custom pl script +# below +*sqFullStampAnywhere \ No newline at end of file diff --git a/logwatch/conf/services/backup.conf b/logwatch/conf/services/backup.conf new file mode 100644 index 0000000..e06ad32 --- /dev/null +++ b/logwatch/conf/services/backup.conf @@ -0,0 +1,9 @@ +# Name of the logfile group without any extension +LogFile = backup + +# Heading displayed on Logwatch's report for this service +Title = "System and Seafile Backup" + +# Override the detail level for this service +# Remember the levels are: 0, 1-4, 5, 6+ +# Detail = 0 \ No newline at end of file diff --git a/logwatch/scripts/services/backup b/logwatch/scripts/services/backup new file mode 100644 index 0000000..28e4f28 --- /dev/null +++ b/logwatch/scripts/services/backup @@ -0,0 +1,112 @@ +#!/usr/bin/perl + +############################################################################# +# $Id$ +############################################################################# +# Log: Seafile backup script (seafbackup, Logwatch group 'backup') +# 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 = )) { + if ($ThisLine =~ /\-- \[ERROR\] /) { + $summaryErr++; + } + elsif ($ThisLine =~ /\-- \[WARNING\] /) { + $summaryWarn++; + } + elsif ($ThisLine =~ /All processes completed successfully/) { + $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 = )) { + 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 = )) { + 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 = )) { + 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: \ No newline at end of file diff --git a/logwatch/scripts/shared/sqlfullstampanywhere b/logwatch/scripts/shared/sqlfullstampanywhere new file mode 100644 index 0000000..48dfa32 --- /dev/null +++ b/logwatch/scripts/shared/sqlfullstampanywhere @@ -0,0 +1,37 @@ +#!/usr/bin/perl + +########################################################################## +# $Id$ +########################################################################## + +############################################################################### +## Filter dates in full-date-time international format, surrounded by square +## brackets located anywhere on a given line +## Format: '[%Y-%m-%d %H:%M:%S]' +############################################################################### + +use Logwatch ':dates'; + +my $Debug = $ENV{'LOGWATCH_DEBUG'} || 0; + +### Specify the format of the date/time stamp itself +$SearchDate = TimeFilter('%Y-%m-%d %H:%M:%S'); + +if ( $Debug > 5 ) { + print STDERR "DEBUG: Inside FullDateTime...\n"; + print STDERR "DEBUG: Looking For: " . $SearchDate . "\n"; +} + +while (defined($ThisLine = )) { + ### specify the regex that defines how to find 'SearchDate' + if ($ThisLine =~ m/\[$SearchDate\] /o) { + print $ThisLine; + } +} + +# vi: shiftwidth=3 syntax=perl tabstop=3 et +# Local Variables: +# mode: perl +# perl-indent-level: 3 +# indent-tabs-mode: nil +# End: \ No newline at end of file