Hallo Martin und Mitstreiter!
Als regelmäßiger Nutzer der ausgesprochen hilfreichen Apptime-Moduls habe ich einen Patch vorbereitet:
--- 98_apptime.pm.dist 2016-12-18 16:22:37.000000000 +0100
+++ 98_apptime.pm 2017-04-04 20:21:48.041642659 +0200
@@ -86,7 +86,7 @@
%{$defs{$e}{helper}{bm}{$fnName}} =(max =>0, mAr =>"",
cnt =>1, tot =>0,
- dmx =>0);
+ dmx =>0, mTS => "");
$h = $defs{$e}{helper}{bm}{$fnName};
}
@@ -108,6 +108,7 @@
if ($ts1 && $h->{max}<$ts1){
$h->{max}=$ts1;
$h->{mAr}= \@arg;
+ $h->{mTS}= strftime("%d.%m. %H:%M:%S", localtime());
}
$h->{tot}+=$ts1;
@@ -147,7 +148,7 @@
${$h->{mAr}}[$i] = "HASH(".${$h->{mAr}}[$i]->{NAME}.")";
}
}
- $arg = join ("; ",@{$h->{mAr}});
+ $arg = join ("; ", map { $_ // "(undef)" } @{$h->{mAr}});
}
push @bmArr,[($n,$t
@@ -156,6 +157,7 @@
,$h->{tot}
,$h->{tot} /$h->{cnt}
,$h->{dmx}
+ ,$h->{mTS}
,$arg
)];
}
@@ -163,12 +165,12 @@
my $field = $fld{$sFld};
if ($field>1){@bmArr = sort { $b->[$field] <=> $a->[$field] } @bmArr;}
else {@bmArr = sort { $b->[$field] cmp $a->[$field] } @bmArr;}
- my $ret = sprintf("\n %35s %20s %6s %6s %8s %8s %s",
- "name","function","max","count","total","average","maxDly","param Max call");
+ my $ret = sprintf("\n %-40s %-35s %6s %6s %8s %8s %6s %-15s %s",
+ "name","function","max","count","total","average","maxDly","TS Max call","param Max call");
my $end = ($top && $top eq "top")?20:@bmArr-1;
$end = @bmArr-1 if ($end>@bmArr-1);
- $ret .= sprintf("\n %35s %20s %6d %6d %8d %8.2f %6d %s",@{$bmArr[$_]})for (0..$end);
+ $ret .= sprintf("\n %-40s %-35s %6d %6d %8d %8.2f %6d %-15s %s",@{$bmArr[$_]})for (0..$end);
return $ret;
}
Änderungen:
- Fix für undef-Problematik: https://forum.fhem.de/index.php/topic,61306.0.html - Bin mir nicht 100% sicher, ob das das Problem löst aber bei mir trat es seit dem Patch nicht mehr auf.
- Der Zeitstempel für den Max Call wird nun auch festgehalten. - Ich finde das ausgesprochen nützlich, wenn man andere Logs (z. B. des SQL-Servers) bei der Ursachensuche abgleichen möchte.
- Die Überschrift "param Max Call" wird nun angezeigt. - (Fehlte im Formastring)
- Spaltenbreiten der Spalten name und function erhöht. - So wird in meinen Anwendungsfällen alles korrekt dargestellt. Gebe zu, dass dynamische Breiten schicker wären aber vielleicht auch Overkill.
- Texte werden nun linksbündig ausgerichtet.
/Edit: Patch gefixt :)
Patrick