From b0842e7e0abf155680a0082fd73e33a323765939 Mon Sep 17 00:00:00 2001 From: KernSani Date: Mon, 7 Jan 2019 10:22:00 +0000 Subject: [PATCH] 98_freezemon.pm: Added possibility to define loglevel for logging long running function calls and commands git-svn-id: https://svn.fhem.de/fhem/trunk@18169 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/98_freezemon.pm | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/fhem/FHEM/98_freezemon.pm b/fhem/FHEM/98_freezemon.pm index 357e0ffae..89045ef4e 100644 --- a/fhem/FHEM/98_freezemon.pm +++ b/fhem/FHEM/98_freezemon.pm @@ -89,7 +89,7 @@ package main; use strict; use warnings; -use Data::Dumper; +#use Data::Dumper; use POSIX; use Time::HiRes qw(gettimeofday); use Time::HiRes qw(tv_interval); @@ -102,6 +102,9 @@ my $version = "0.0.22"; my @logqueue = (); my @fmCmd = (); my @fmFn = (); +my $fmName; +my $fmCmdLog; +my $fmFnLog; ################################### sub freezemon_Initialize($) { @@ -111,7 +114,7 @@ sub freezemon_Initialize($) { # Module specific attributes my @freezemon_attr = ( -"fm_forceApptime:0,1 fm_freezeThreshold disable:0,1 fm_log fm_ignoreDev fm_ignoreMode:off,single,all fm_extDetail:0,1 fm_logExtraSeconds fm_logFile fm_logKeep fm_whitelistSub fm_CatchFnCalls:0,1 fm_CatchCmds:0,1" +"fm_forceApptime:0,1 fm_freezeThreshold disable:0,1 fm_log fm_ignoreDev fm_ignoreMode:off,single,all fm_extDetail:0,1 fm_logExtraSeconds fm_logFile fm_logKeep fm_whitelistSub fm_CatchFnCalls:0,1,2,3,4,5 fm_CatchCmds:0,1,2,3,4,5" ); $hash->{GetFn} = "freezemon_Get"; @@ -706,6 +709,7 @@ sub freezemon_Attr($) { elsif ( $aName eq "fm_CatchFnCalls" ) { if ( $aVal ne 0 ) { freezemon_install_callFn_wrapper($hash); + $fmFnLog = $aVal; } elsif ( defined ($hash->{helper}{mycallFn} ) ) { Log3( "", 0, "[Freezemon] $name: Unwrapping CallFn" ); @@ -721,6 +725,7 @@ sub freezemon_Attr($) { elsif ( $aName eq "fm_CatchCmds" ) { if ( $aVal ne 0 ) { freezemon_install_analyzeCommand_wrapper($hash); + $fmCmdLog = $aVal; } elsif ( defined ( $hash->{helper}{analyzeCommand} ) ) { Log3( "", 0, "[Freezemon] $name: Unwrapping analyzeCommand" ); @@ -791,9 +796,13 @@ sub freezemon_start($) { { readingsSingleUpdate( $hash, "state", "initialized", 0 ); freezemon_install_log_wrapper($hash) if AttrVal( $name, "fm_logFile", "" ) ne ""; - freezemon_install_callFn_wrapper($hash) if AttrVal( $name, "fm_CatchFnCalls", 0 ) == 1; - freezemon_install_analyzeCommand_wrapper($hash) if AttrVal( $name, "fm_CatchCmds", 0 ) == 1; + freezemon_install_callFn_wrapper($hash) if AttrVal( $name, "fm_CatchFnCalls", 0 ) > 0; + freezemon_install_analyzeCommand_wrapper($hash) if AttrVal( $name, "fm_CatchCmds", 0 ) > 0; + } + $fmName = $name; + $fmCmdLog = AttrVal( $name, "fm_CatchCmds", 0 ); + $fmFnLog = AttrVal( $name, "fm_CatchFnCalls", 0 ); $hash->{helper}{DISABLED} = 0; my $next = int( gettimeofday() ) + 1; @@ -956,7 +965,7 @@ sub freezemon_callFn($@) { push @fmFn, [ $n, $d ]; #$fm_fn .= "$n:$d "; - Log3 undef, 5, "[Freezemon] Long function call detected $n:$d - $ms seconds"; + Log3 $fmName, $fmFnLog, "[Freezemon] $fmName: Long function call detected $n:$d - $ms seconds"; } return ($result,$p) if ($p) ; return $result; @@ -982,7 +991,7 @@ sub freezemon_analyzeCommand($$$;$) { push @fmCmd, [ $n, $d ]; #$fm_fn .= "$n:$d "; - Log3 undef, 5, "[Freezemon] Long running Command detected $n:$d - $ms seconds"; + Log3 $fmName, $fmCmdLog, "[Freezemon] $fmName: Long running Command detected $n:$d - $ms seconds"; } return $result; } @@ -1023,8 +1032,6 @@ sub freezemon_wrap_analyzeCommand($) { return sub($$;$) { my ( $cl, $cmd, $cfc ) = @_; return "already wrapped" if ( defined($cl) && $cl eq "freezemon" ); - - #return $fn if ( $b == 100 ); return freezemon_analyzeCommand( $fn, $cl, $cmd, $cfc ); } } @@ -1315,9 +1322,9 @@ sub freezemon_getLogPath($) {