Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Wenn ich class: logging.NullHandler angebe, geht es (so wie beim StreamHandler). Das "reguläre" Logging kann ich damit unterdrücken.
Die vier Meldungen (ENGINE Bus STARTING usw) kommen von CherryPy und sind idiotischerweise als "ERROR" klassifiziert. Neben der mMn falschen Einordnung loggt cherrypy die parallel noch auf StdErr und damit indirekt auf die sichtbare Konsole. Könnte man userseitig mit Umleitungen filtern.
Die Fragen zu den IP-Logmeldungen schiebe ich mal in den Webservices-Thread
Noch eine andere Frage: ich habe mal versucht, einzelne Log-Ebenen ("logger"?) auszuschalten; gibt es dafür spezielle Optionen?
Ich habe in der Python-Doc zum logging den NullHandler gefunden, der würde genau tun, was ich möchte (einfach nicht loggen), aber wenn ich versuche, den so einzubinden, wie auch StreamHandler oder TimedRotatingFileHandler eingebunden werden (class: logging.handlers.NullHandler), bekomme ich einen Haufen Fehler...
Code:
Traceback (most recent call last):
File "/usr/lib/python3.7/logging/config.py", line 389, in resolve
self.importer(used)
ModuleNotFoundError: No module named 'logging.handlers.NullHandler'; 'logging.handlers' is not a package
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/usr/lib/python3.7/logging/config.py", line 562, in configure
handler = self.configure_handler(handlers[name])
File "/usr/lib/python3.7/logging/config.py", line 712, in configure_handler
klass = self.resolve(cname)
File "/usr/lib/python3.7/logging/config.py", line 396, in resolve
raise v
File "/usr/lib/python3.7/logging/config.py", line 389, in resolve
self.importer(used)
ValueError: Cannot resolve 'logging.handlers.NullHandler': No module named 'logging.handlers.NullHandler'; 'logging.handlers' is not a package
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "bin/smarthome.py", line 1318, in <module>
sh = SmartHome(extern_conf_dir=extern_conf_dir)
File "bin/smarthome.py", line 288, in __init__
self.init_logging(self._log_conf_basename, MODE)
File "bin/smarthome.py", line 515, in init_logging
logging.config.dictConfig(doc)
File "/usr/lib/python3.7/logging/config.py", line 799, in dictConfig
dictConfigClass(config).configure()
File "/usr/lib/python3.7/logging/config.py", line 570, in configure
'%r' % name) from e
ValueError: Unable to configure handler 'nolog'
Den NullHandler gibt es seit Python 3.1, kann es sein, dass man den in shng erst aktivieren müsste?
Da das netwpork Plugin als ein Teil von shng Logger nutzt, die in der logging.yaml definiert simd und Du dort keinen Formatter hast der ein solches Log Format erzeugt, stimmt wohl Deine Annahme das das aus einem genutzten Package kommt (analog zum cherrypy Output). Wie gesagt, das console Logging kann man nicht vernünftig kontrollieren....
Ja, es gibt Editoren, die "live scrolling" machen. Aber wie gesagt, das wäre noch ein Fenster mehr.
Das knx-Plugin ist das normale, aber das hat hier glaube ich nix zu suchen.
Ich frage von außerhalb (mit python urllib) per network-Plugin die beiden Items ab, und die Zeilen sehen aus wie Zugriffs"logs", vorn die Quell-IP, dann das HTTP-Kommando (GET und URL) mit Status, und hinten der User-Agent (urllib). Das muss also vom network-Plugin oder von einer dort eingebundenen Library kommen. Was anderes kann ich mir da nicht vorstellen.
Nein, bei macht der Editor (läuft auf meinem Mac) einfach weiter wenn ich auf meinem NUC shng neu starte...
Die beiden HTTP GET Zeilen enthalten ja einen Hinweis auf knx. Nutzt Du das normale knx Plugn oder das von thengsty? Hast Du evtl. Bus Monitorig konfiguriert oder ähnliches?
Im normalen Betrieb ist das auch völlig ok. Aber wenn ich am Plugin baue, muss ich ständig shng anhalten und neu starten, wenn irgendwo ein Syntaxfehler ist oder etwas nicht so geht, wie es soll. Da müsste ich dann entweder den Editor nicht nur neu laden lassen, sondern live mitscrollen lassen - dann braucht das neben Editor für den Code und dem Terminal noch ein Fenster und ich müsste auch immer hin und her wechseln, statt nur im Terminal zu scrollen.
Für den Dauerbetrieb passt das Logging ja.
Die ersten vier Zeilen ("ENGINE...") schreibt cherrypy anscheinend so auf die Konsole, ich habs zum Testen jetzt deaktiviert, das Modul. Woher der Rest kommt, weiß ich nicht. Das Network-Plugin hat keine (für mich) erkennbaren Log-Anweisungen, die so "komisch" (ohne Log-Format) schreiben. Da werde ich bei Gelegenheit nochmal weiter reinschauen, das zwickt mich jetzt, dass ich das nicht finde...
In den Logfiles kannst Du cherrypy recht gut wegfiltern. Das funktioniert aber nicht für das console logging, weshalb ich console logging überhaupt nicht mehr nutze (einfach zu schlecht konfigurierbar). Ich mache einfach das entsprechende Logfile in einem Editor auf, der bei Aktualisierungen der Datei die Änderungen automatisch nachlädt.
Weißt du, was die Ausgaben im vorherigen Beitrag sind bzw. wer die verursacht und wie man die abstellen kann?
Die cherrypy Einträge kommen durch einen Logger den cherrypy selber erzeugt Die kann man nicht abstellen, sondern nur kanalisieren (so gut es geht).
Einen Teil kannst Du loswerden, wenn Du einen Logger cherrypy.access anlegst und die Einträge in die Walachei schickst.
Ganz los kann man die nur werden, wenn man einen Logfilter programmiert und im Abschnitt filters: in die logging.yaml einbindet. (Dazu müsstest Du die Python Doku bemühen.)
...
# initialize logger if necessary
if '.'.join(VERSION.split('.', 2)[:2]) <= '1.5':
self.logger = logging.getLogger(__name__)
...
Soweit ich das verstanden habe, initialisiert die SmartPlugin-Klasse den ja selbst, also wird der Code oben nur in der älteren shng-Version ausgeführt...
Weißt du, was die Ausgaben im vorherigen Beitrag sind bzw. wer die verursacht und wie man die abstellen kann? Die scheinen ja auch nicht dem Loggingformat zu entsprechen. Ich habe auch mit "Bus" und "STARTING" keine Dateien in ./modules/ finden können, um dem auf den Grund zu gehen.
Die ersten vier Zeilen sind ja irgendwo aus CherryPy, daher die Portnummern, richtig?
Die weiteren Ausgaben sind Reaktionen auf Abfragen an das network-Plugin. Gibt es da noch ein Logging, das nicht abgefangen wird?
Wie heisst denn der Logger in Deinem Plugin? Hast Du selber einen initialisiert oder nutzt Du den Logger den die SmartPlugin Klasse initialisiert?
Zur Sicherheit kannst Du in der Admin GUI auch unter Logs/Liste der Logger nachsehen.
Dort siehst Du welche Logger initialisiert sind, welchen Minimal Level sie loggen, welchen Handler sie nutzen und in welche Datei sie schreiben.
Mannomann, irgendwie komme ich mit dem Logging nicht klar.. mal wieder.
Ich möchte
- verschiedene WARNING-Level in das smarthome-warning schreiben
- das aktuell in Entwicklung befindliche priv_viessmann DEBUG in ./shng.log und auf die Konsole schreiben
- sonst NICHTS auf der Konsole haben.
Ich starte shng.py mit
python3 bin/smarthome.py -f
und erhalte
Code:
[12/Dec/2020:18:07:53] ENGINE Bus STARTING
[12/Dec/2020:18:07:53] ENGINE Serving on http://192.168.2.231:8383
[12/Dec/2020:18:07:54] ENGINE Serving on http://192.168.2.231:8384
[12/Dec/2020:18:07:54] ENGINE Bus STARTED
192.168.2.231 - - [12/Dec/2020:18:07:55] "GET /ws/items/d.stat.knx.last_data HTTP/1.1" 404 3872 "" "Python-urllib/3.7"
192.168.2.231 - - [12/Dec/2020:18:07:55] "GET /ws/items/d.stat.knx.activity HTTP/1.1" 404 3871 "" "Python-urllib/3.7"
Den Loglevel im Betrieb zu ändern hilft mir aber nicht wirklich... wozu sollte ich das brauchen?
Wenn Du im Betrieb ein merkwürdiges Verhalten hast, kannst Du den Loglevel hochdrehen und damit Logeinträge bekommen, die Du vielleicht nach einem Neustart nicht hättest.
An die CherryPy Logger (access und error) kommst Du ran, wenn Du sie in logging.yaml definiert hast. Das Screen Logging könnte man zwar auch darüber einstellen, aber das braucht wirklich keiner. Ich habe (Deinem Vorschlag folgend) das im http Modul abgestellt.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Einen Kommentar schreiben: