stacktrace nicht mit verbose verknüpfen

Begonnen von Dr. Boris Neubert, 29 Oktober 2016, 09:09:01

Vorheriges Thema - Nächstes Thema

Dr. Boris Neubert

Hallo,

aus fhem.pl

sub
SignalHandling()
{
...
    Log 1, "PERL WARNING: $msg";
    Log 3, "eval: $cmdFromAnalyze" if($cmdFromAnalyze && $msg =~ m/\(eval /);
    stacktrace() if($attr{global}{stacktrace} &&
                    $attr{global}{verbose} >= 3 &&
                    $msg !~ m/ redefined at /);
...
}


Ich verstehe nicht, warum der Stacktrace nur gezeigt werden soll, wenn die Verbosity 3 oder höher ist. Bei mir steht die globale Verbosity auf 2 und ich möchte dennoch Stracktraces für Warnungen. M.E. ist die Abfrage auf die Verbosity entbehrlich.

Weiter sollte auch "eval: $cmdFromAnalyze" automatisch mit angezeigt werden, wenn es eine Stacktrace gibt, unabhängig von der Verbosity. Diese Information ist bei Warnungen praktisch immer nützlich.

Fazit für den Mittelteil:

if($attr{global}{stacktrace}) {
    Log 1, "PERL WARNING: $msg";
    Log 1, "eval: $cmdFromAnalyze" if($cmdFromAnalyze && $msg =~ m/\(eval /);
    stacktrace() if($attr{global}{stacktrace} &&
                    $msg !~ m/ redefined at /);
}


Und in sub stacktrace() muss der Loglevel auf 1 gestellt werden.

Wenn die Verquickung mit Verbosity nötig sein sollte, dann schlage ich vor, dass das Argument zum stacktrace-Attribut dafür benutzt wird.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

rudolfkoenig

ZitatIch verstehe nicht, warum der Stacktrace nur gezeigt werden soll, wenn die Verbosity 3 oder höher ist.
stacktrace hat Log 3 verwendet, deswegen waere es sinnlos gewesen, es mit verbose < 3 aufzurufen. Habe die verbose Pruefung rausgenommen, und stacktrace auf Log 1 geaendert.

$cmdFromAnalyze auf Log 1 rauszugeben finde ich nicht sinnvoll, wer Log 1 setzt, der will keine Details haben.
Ich habe die Ausgabe mit Log 1 zusaetzlich in stacktrace eingebaut, falls verbose < 3 ist. Ein Boris-Spezialfall, sozusagen.

Dr. Boris Neubert

Danke. Ja, so finde ich das ideal.

Wurde gerade per PM darum gebeten, ob wir bei der Gelegenheit die Warnungen beim reload von Modulen  ausbauen könnten ("redefined at").

Grundsätzlich ist die Warnung sinnvoll. Ich ignoriere sie jedoch mittlerweile, weil sie bei mir mit dem Reload in Verbindung steht und ich die Warnungen dort gewöhnt bin. Habe keine eigene Meinung dazu.
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

dev0

Ich perösonlich finde die reload Meldungen sinnvoll. Ich vermute, dass den Anwender der Ausdruck 'PERL WARNING:' irritiert.

justme1968

auch wenn die meldung in mehr als 99% der fälle ignoriert werden kann sollte sie nicht ganz verschwinden.

man könnte vielleicht zeilen mit dem muster <modul>_xyz redefined at ./FHEM/NN_<modul>.pm (d.h. die meldung betrifft eine routine die den gleichen namen enthält wie das aktuelle modul file) unterdrücken wenn verbose 3 und kleiner ist.

aber ich weiss nicht ob da nicht auch schon zu viele richtige unterdrückt werden.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

rudolfkoenig

Ich sehe die Unterdrueckung auch kritisch, normale Benutzer sollten es nie sehen, und Entwickler sollten wissen, was das bedeutet.
Bleibt erstmal so wie es ist.