Durch Einfuehrung von Log3 sind die Inkonsistenzen der loglevel und verbose Logik deutlich geworden, und ich habe einen Vorschlag von Mattias implementiert:
- logfile ist ab sofort unerwuenscht (deprecated), damit auch GetLogLevel.
- Die Module sollten loglevel aus der Liste der angebotenen Attribute und aus der Doku entfernen, und statt Log die neue Funktion Log3 aufrufen.
- Das neue Attribut verbose muss weder in AttrList angegeben noch dokumentiert werden, da es global zur Verfuegung steht, mit der gleichen Semantik wie bisher bei global: grosse Werte bedeuten viel Log, kleine wenig Log, moeglich ist 0-5
- In allen Modulen sollte Log durch Log3 ersetzt werden: der einen zusaetzlichen ersten Parameter benoetigt: entweder $hash oder $name. Also aus
Log 4, "Device $dev opened";
wird
Log3 $name, 4, "Device $dev opened";
- Die 3 in Log3 steht fuer den Anzahl der Parameter (3 :).
- Falls man kein Geraet ($name/$hash) hat, dann kann man auch undef verwenden, dann wird es mit "global verbose" verglichen. In den XXX_Parse Funktionen verwendet man $iohash oder $iohash->{NAME}, solange das eigentliche Geraet noch nicht identifiziert wurde, danach wie ueblich $hash/$name.
- Log funktioniert weiterhin, und wird durch "Log3 undef, ..." implementiert, sollte aber nur noch von fhem.pl oder Enduser verwendet werden.
Ich habe alle von mir betreuten Module (51 an der Zahl) auf Log3 umgestellt, es waere nett, wenn alle Modulautoren das zuegig nachziehen wuerden, damit die Benutzer eine eindeutige Semantik vorfinden.