Auch von mir nochmal Danke für die ausführliche Erklärung.
Ich hatte es nämlich anderst verstanden.
Viele Grüße
Stefan
Ankündigung
Einklappen
Keine Ankündigung bisher.
Logging...?
Einklappen
X
-
Msinn
danke für die super Erklärung. Ich hab es jetzt nochmal ohne Handler probiert und jetzt klappt es. Jetzt wird auch der Logger als untergeordneter Logger erkannt, was vorher anders war.
grafik.png
Entweder war meine logging.yaml zu alt, oder ich hatte einen Fehler in den Einrückungen.
Gruß
Wolfram
Einen Kommentar schreiben:
-
Zitat von wvhn Beitrag anzeigenmein Eindruck war, dass man im Gegensatz zu den Plugin-Loggern bei den Modul-Loggern im zweiten Teil doch einen eigenen Handler braucht.)
Zur Erklärung:
1. Die Handler haben auch einen Loglevel. Der steuert, welche Meldnugen durch den Handler ausgegeben werden:- shng_warnings_file hat den Level NOTICE. Es werden also nur NOTICE, WARNING, ERROR und CRITICAL Meldungen durch den Handler ausgegeben.
- shng_details_file hat den Level DEBUG. Es werden also alle Meldungen durch den Handler ausgegebe.
- Wenn ein Parameter nicht angegeben wird, wird er vom übergeordneten Logger übernommen
- Listen Parameter werden mit dem entsprechenden Parameter vom übergeordneten Logger gemergt
Code:modules: # Default logger for SmartHomeNG modules handlers: [shng_details_file] level: WARNING modules.websocket: handlers: [shng_details_file] level: INFO
Wenn (wie in diesem Beispiel) die Liste der Handler gleich ist, sollte man sie im untergeordneten Logger weglassen. Dann sind auch die doppelten Logeintäge weg.
Einen Kommentar schreiben:
-
Moin,
mein Eindruck war, dass man im Gegensatz zu den Plugin-Loggern bei den Modul-Loggern im zweiten Teil doch einen eigenen Handler braucht. Jetzt habe ich nochmal die aktuellste logging.default.yaml der v1.9.3 genommen und die Einstellungen übertragen. Zusätzlich habe ich den neuen Logger angelegt, dieses Mal mit Handler:
Code:modules: # Default logger for SmartHomeNG modules handlers: [shng_details_file] level: WARNING modules.websocket: handlers: [shng_details_file] level: INFO
Code:2023-01-17 09:44:09 WARNING modules.websocket smartVISU_protocol_v4 error: Client myiPad.x.y (192.168.2.106:53313), smartVISU v3.3.a, Safari 16 - no close frame received or sent 2023-01-17 09:44:09 WARNING modules.websocket smartVISU_protocol_v4 error: Client myiPad.x.y (192.168.2.106:53313), smartVISU v3.3.a, Safari 16 - no close frame received or sent 2023-01-17 09:44:09 INFO modules.websocket smartVISU_protocol_v4: Client 192.168.2.106:53313 stopped 2023-01-17 09:44:09 INFO modules.websocket smartVISU_protocol_v4: Client 192.168.2.106:53313 stopped 2023-01-17 09:44:09 INFO modules.websocket USER removed: 192.168.2.106:53313 - local port: 2424 2023-01-17 09:44:09 INFO modules.websocket USER removed: 192.168.2.106:53313 - local port: 2424
Gruß
Wolfram
Einen Kommentar schreiben:
-
Was ich eigentlich sagen wollte, ist das folgenden Konfigruation dazu führt, das jede WARNING (und ERROR) doppelt im Log erscheint.
Zumindest hatte ich das Verhalten so letztens beobachtet und hatte deshalb wohl oben nicht genau genug gelesen.
Code:plugins: handlers: [shng_details_file] level: WARNING plugins.pluginname: handlers: [shng_details_file] level: INFO
Danke fürs klarstellen.
Einen Kommentar schreiben:
-
Zitat von wvhn Beitrag anzeigen[*]Lege ich einen weiteren logger "modules.websocket" mit dem level: INFO an und setze den level für "modules" auf WARNING, dann bekomme ich alle Infos vom Websocket-Modul doppelt - vor allem aber schon in der Initialisierungsphase sehr viel mehr Infos.
Hätte jetzt vermutet, dass das bei den Modulen vielleicht ähnlich ist.
Gruß Stefan
Einen Kommentar schreiben:
-
Ich hänge mich hier mal an:
beim Testen des Websocketmoduls möchte ich von diesem möglichst viele Meldungen bekommen. Also habe ich den loglevel für "modules" auf "INFO" gesetzt.
Code:modules: # Default logger for SmartHomeNG modules handlers: [shng_details_file] level: INFO
- Lege ich einen weiteren logger "modules.websocket" mit dem level: INFO an und setze den level für "modules" auf WARNING, dann bekomme ich alle Infos vom Websocket-Modul doppelt - vor allem aber schon in der Initialisierungsphase sehr viel mehr Infos.
- Lege ich stattdessen einen weiteren Logger "modules.admin" mit dem Level "WARNING" (gleiches Vorgehen wie im Beispiel "plugins.cli"), fängt das http-Modul an zu quatschen und das Websocket-Modul liefert auch erhöhten Output. Allerdings ist "admin" leise. In der Liste der Logger taucht modules.admin als eigener Logger mit Handler "shng_details_file" auf,
grafik.png
während ein auf gleiche Weise angelegter Logger für plugins.database auf den plugins-Logger referenziert.grafik.png - Lege ich einen Filter mit "module: admin" an, dann ist das Ergebnis ungefähr wie im zweiten Fall. (Man kann nicht zusätzlich auf "level" filtern, oder? Die Liste der "Advanced Logger" zeigt dann nichts mehr an. Ich habe das als Fehler im Filter interpretiert).
Danke und Gruß
Wolfram
Einen Kommentar schreiben:
-
Im v1.7.2 Master ist die Zeile zumindest nicht auskommentiert.
Einen Kommentar schreiben:
-
In der Version, die ich hier habe (müsste nachsehen, ich glaube, der letzte Release) war es auskommentiert.
Einen Kommentar schreiben:
-
Ich habe gerade gesehen, dass da bereits
Code:cherrypy.config.update({'log.screen': False})
Einen Kommentar schreiben:
-
Da sehe ich erstmal keine negativen Nebenwirkungen. Das kann ich ja für das kommende Release ins http Modul einbauen.
Einen Kommentar schreiben:
-
Die beiden access-Zeilen kommen aus cherrypy, und zwar über die App, die das webservices-Plugin dort anmeldet. Sie kommen auch über den access-Logger - dann aber im korrekten Format, und die lassen sich auch steuern.
Die Zeilen, die direkt mit der IP anfangen, sind der "Inhalts"anteil der Access-Logmeldungen und werden von cherrypy (mal wieder) direkt in die Konsole geschrieben.
Ich habe das mit einer etwas brutalen Methode in http-Modul abwürgen können, aber das ist ja eigentlich nicht Sinn der Sache - auf der anderen Seite sollte so ein Modul wie cherrypy eigentlich nicht von sich aus auf die Konsole schreiben, aber das ist ein anderes Thema.
Vielleicht lässt sich das ja in webservices konfigurieren, ansonsten wäre es ggf. doch nochmal ein Thema für module.http....
Hinter cherrypy.config.update(global_conf) habe ich eingefügt:
Code:cherrypy.config.update( { 'log.screen': False, 'log.access_file': '', 'log.error_file': '' } )
Einen Kommentar schreiben:
-
Ich bin immer noch der Meingung dir beiden Zeilen kommen aus cherrypy und können wie ich oben schrieb durch den logger cherrypy.access gesteuert werden.
Einen Kommentar schreiben:
Einen Kommentar schreiben: