diff --git a/fhem/CHANGED b/fhem/CHANGED index f813bc3c8..215b7d9d8 100644 --- a/fhem/CHANGED +++ b/fhem/CHANGED @@ -1,5 +1,7 @@ # Add changes at the top of the list. Keep it in ASCII, and 80-char wide. # Do not insert empty lines here, update check depends on it. + - feature: 93_Log2Syslog: new attribute "exclErrCond" to exclude events from + rating as "Error" - changed: 70_BRAVIA: optimized command queue, introduced own package, new reading application diff --git a/fhem/FHEM/93_Log2Syslog.pm b/fhem/FHEM/93_Log2Syslog.pm index ef44eea89..8e877ffe3 100644 --- a/fhem/FHEM/93_Log2Syslog.pm +++ b/fhem/FHEM/93_Log2Syslog.pm @@ -40,6 +40,7 @@ eval "use Net::Domain qw(hostname hostfqdn hostdomain domainname);1" or my $Mis # Versions History intern: our %Log2Syslog_vNotesIntern = ( + "5.6.0" => "23.03.2019 attribute exclErrCond to exclude events from rating as \"error\" ", "5.5.0" => "18.03.2019 prepare for Meta.pm ", "5.4.0" => "17.03.2019 new feature parseProfile = Automatic ", "5.3.2" => "08.02.2019 fix version numbering ", @@ -95,6 +96,8 @@ our %Log2Syslog_vNotesIntern = ( # Versions History extern: our %Log2Syslog_vNotesExtern = ( + "5.6.0" => "23.03.2019 New attribute \"exclErrCond\" to exclude events from rating as \"Error\" even though the ". + "event contains the text \"Error\". ", "5.4.0" => "17.03.2019 New feature parseProfile = Automatic. The module may detect the message format BSD or IETF automatically in server mode ", "5.3.2" => "08.02.2019 fix version numbering ", "5.3.0" => "16.10.2018 attribute sslCertPrefix added to support multiple SSL-keys (Forum:#92030)", @@ -102,7 +105,7 @@ our %Log2Syslog_vNotesExtern = ( "5.2.0" => "02.10.2018 direct help for attributes added", "5.1.0" => "29.09.2018 new get <name> versionNotes command ", "5.0.1" => "27.09.2018 automatic reconnect to syslog-server in case of write error ", - "5.0.0" => "26.09.2018
  • TCP Server mode is possible now for Collector devices<\li>
  • the used parse-profile is shown as Internal<\li>
  • Parse_Err_No counts faulty persings since start<\li>
  • new octetCount attribute switches the syslog framing method (see also RFC6587 Transmission of Syslog Messages over TCP)<\li>
  • TCP SSL-support<\li>
  • new set 'reopen' command to reconnect a broken connection<\li>
  • some code fixes ", + "5.0.0" => "26.09.2018 Some changes:
  • TCP Server mode is possible now for Collector devices<\li>
  • the used parse-profile is shown as Internal<\li>
  • Parse_Err_No counts faulty persings since start<\li>
  • new octetCount attribute switches the syslog framing method (see also RFC6587 Transmission of Syslog Messages over TCP)<\li>
  • TCP SSL-support<\li>
  • new set 'reopen' command to reconnect a broken connection<\li>
  • some code fixes ", "4.8.5" => "20.08.2018 BSD/parseFn parse changed, BSD setpayload changed, new variable \$IGNORE in parseFn ", "4.8.4" => "15.08.2018 BSD parse changed again ", "4.8.3" => "14.08.2018 BSD setpayload changed, BSD parse changed, new Internal MYFQDN ", @@ -250,6 +253,7 @@ sub Log2Syslog_Initialize($) { "disable:1,0,maintenance ". "addTimestamp:0,1 ". "contDelimiter ". + "exclErrCond:textField-long ". "logFormat:BSD,IETF ". "makeEvent:no,intern,reading ". "outputFields:sortable-strict,PRIVAL,FAC,SEV,TS,HOST,DATE,TIME,ID,PID,MID,SDFIELD,CONT ". @@ -267,7 +271,7 @@ sub Log2Syslog_Initialize($) { $readingFnAttributes ; - # FHEM::Meta::InitMod( __FILE__, $hash ); # für Meta.pm (https://forum.fhem.de/index.php/topic,97589.0.html) + FHEM::Meta::InitMod( __FILE__, $hash ); # für Meta.pm (https://forum.fhem.de/index.php/topic,97589.0.html) return; } @@ -1245,7 +1249,7 @@ sub Log2Syslog_Attr ($$$$) { return "\"$aName\" is only valid for model \"Collector\""; } - if ($cmd eq "set" && $hash->{MODEL} =~ /Collector/ && $aName =~ /addTimestamp|contDelimiter|addStateEvent|logFormat|octetCount|ssldebug|timeout/) { + if ($cmd eq "set" && $hash->{MODEL} =~ /Collector/ && $aName =~ /addTimestamp|contDelimiter|addStateEvent|logFormat|octetCount|ssldebug|timeout|exclErrCond/) { return "\"$aName\" is only valid for model \"Sender\""; } @@ -1422,14 +1426,13 @@ sub Log2Syslog_eventlog($$) { my $txt = $events->[$i]; $txt = "" if(!defined($txt)); $txt = Log2Syslog_charfilter($hash,$txt); - my $tim = (($ct && $ct->[$i]) ? $ct->[$i] : $tn); my ($date,$time) = split(" ",$tim); if($n =~ m/^$rex$/ || "$n:$txt" =~ m/^$rex$/ || "$tim:$n:$txt" =~ m/^$rex$/) { my $otp = "$n $txt"; $otp = "$tim $otp" if AttrVal($name,'addTimestamp',0); - ($prival,$sevAstxt) = Log2Syslog_setprival($txt); + ($prival,$sevAstxt) = Log2Syslog_setprival($hash,$txt); if($sendsev && $sendsev !~ m/$sevAstxt/) { # nicht senden wenn Severity nicht in "respectSeverity" enthalten Log2Syslog_Log3slog($name, 5, "Log2Syslog $name - Warning - Payload NOT sent due to Message Severity not in attribute \"respectSeverity\"\n"); @@ -1492,7 +1495,7 @@ sub Log2Syslog_fhemlog($$) { if($txt =~ m/^$rex$/ || "$vbose: $txt" =~ m/^$rex$/) { my $otp = "$vbose: $txt"; $otp = "$tim $otp" if AttrVal($name,'addTimestamp',0); - ($prival,$sevAstxt) = Log2Syslog_setprival($txt,$vbose); + ($prival,$sevAstxt) = Log2Syslog_setprival($hash,$txt,$vbose); if($sendsev && $sendsev !~ m/$sevAstxt/) { # nicht senden wenn Severity nicht in "respectSeverity" enthalten Log2Syslog_Log3slog($name, 5, "Log2Syslog $name - Warning - Payload NOT sent due to Message Severity not in attribute \"respectSeverity\"\n"); @@ -1748,8 +1751,10 @@ return; ############################################################################### # set PRIVAL (severity & facility) ############################################################################### -sub Log2Syslog_setprival ($;$$) { - my ($txt,$vbose) = @_; +sub Log2Syslog_setprival ($$;$) { + my ($hash,$txt,$vbose) = @_; + my $name = $hash->{NAME}; + my $do = 0; my ($prival,$sevAstxt); # Priority = (facility * 8) + severity @@ -1778,8 +1783,27 @@ sub Log2Syslog_setprival ($;$$) { $sv = 6 if ($vbose == 4); $sv = 7 if ($vbose == 5); } - - $sv = 3 if (lc($txt) =~ m/error/); # error condition + + if (lc($txt) =~ m/error/) { + # error condition + $do = 1; + my $ees = AttrVal($name, "exclErrCond", ""); + if($ees) { + $ees =~ m/^\s*(.*)\s*$/s; + $ees = $1; + $ees =~ s/[\n]//g; + $ees =~ s/,,/_ESC_/g; + my @excl = split(",",$ees); + foreach my $e (@excl) { + # Negativliste abarbeiten + $e =~ s/_ESC_/,/g; + Log2Syslog_trim($e); + $do = 0 if($txt =~ m/^$e$/); + } + } + $sv = 3 if($do); + } + $sv = 4 if (lc($txt) =~ m/warning/); # warning conditions $prival = ($fac*8)+$sv; @@ -2045,6 +2069,15 @@ sub Log2Syslog_setVersionInfo($) { return; } +################################################################ +# Leerzeichen am Anfang / Ende eines strings entfernen +################################################################ +sub Log2Syslog_trim ($) { + my $str = shift; + $str =~ s/^\s+|\s+$//g; +return ($str); +} + ############################################################################################# # Hint Hash EN ############################################################################################# @@ -2413,6 +2446,29 @@ Aug 18 21:26:54 fhemtest.myds.me 1 2017-08-18T21:26:54 fhemtest.myds.me Test_eve

    + + +