Patch für 98_apptime.pm

Begonnen von PatrickR, 25 Februar 2017, 21:40:35

Vorheriges Thema - Nächstes Thema

PatrickR

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
lepresenced - Tracking von Bluetooth-LE-Tags (Gigaset G-Tag) mittels PRESENCE

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning." - Rich Cook