logging modul funktioniert nicht beim autostart

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Moin,

    bisher habe ich für alle Probleme eine Lösung gefunden. Bei der Problematik komme ich jedoch leider nicht weiter. Ich weiß auch nicht wonach ich suchen soll um eine Lösung zu finden.

    Problematik:

    Mein Pythonscript startet automatisch nach Systemstart jedoch loggt das logging_modul nicht in die von mir vorgesehene Logdatei.

    Weder beim autostart über einen Eintrag in /etc/rc.local noch über die Variante /etc/init.d/beispiel


    System:

    Raspberry Pi Zero Rev. 1.1

    Raspbian GNU / Linux 10 (buster)

    python 3.7

    Ich habe schon herausgefunden das ich die Fehler über journalctl finden kann.

    Ich finde das aber ziemlich umständlich.

    Logging HOWTO — Python 3.9.7 documentation

    Habe ich mir auch schon komplett durchgelesen und anhand dessen ein Beispiel erstellt, welches über den Terminalaufruf funktioniert aber nicht beim Aufruf über die genannten autostart Varianten.

    Ich vermute das ich etwas am logging.handler ändern muss ich weiß aber nicht was.

    Wenn ich das handler-Beispiel aus dem link probiere funktioniert das Script nicht und ich bekomme die Fehlermeldung:


    Code
    Traceback (most recent call last): File "/home/pi/s-boxlibary/trylog/trylog.py", line 4, in <module>
    
    logging.config.fileConfig('logging.conf') File "/usr/lib/python3.7/logging/config.py", line 71, in fileConfig
    
    formatters = _create_formatters(cp) File "/usr/lib/python3.7/logging/config.py", line 104, in _create_formatters
    
    flist = cp["formatters"]["keys"] File "/usr/lib/python3.7/configparser.py", line 958, in __getitem__
    
    raise KeyError(key) KeyError: 'formatters'

    Das einfache Codebeispiel :

    (Wirft keinen Fehler aber schreibt nicht in meine Datei)

    Python
    #!/usr/bin/python3
    
    import logging
    
    logging.basicConfig(filename='try.log', format='%(levelname)s:%(asctime)s:%(funcName)s:%(message)s', filemode='w', level=logging.INFO)
        
    
    # Beispiel:
    warninglog = 'außerhalb main'
    logging.warning(warninglog)

    Vielen Dank schonmal im voraus.

    • Hilfreichste Antwort
    • Offizieller Beitrag

    Hallo BruderB,

    willkommen im Forum! ;)

    filename='try.log'

    Verwende immer und überall absolute Pfade!


    Btw.

    Weder beim autostart über einen Eintrag in /etc/rc.local noch über die Variante /etc/init.d/beispiel

    Beides ist veraltet. Aktueller Stand der Dinge ist eine Systemd Service Unit. Siehe dazu u.a. hier: https://www.raspberrypi.org/documentation/…ating-a-service

  • Hallo BruderB,

    willkommen im Forum! ;)

    Verwende immer und überall absolute Pfade!

    Danke. :)

    Alles klar, wird geändert.

    Btw.

    Beides ist veraltet. Aktueller Stand der Dinge ist eine Systemd Service Unit. Siehe dazu u.a. hier: https://www.raspberrypi.org/documentation/…ating-a-service

    Traumhaft, damit klappt alles wie ich es wollte.

    Vielen vielen Dank für die schnelle Antwort.

    Werde mich jetzt noch weiter mit systemd befassen damit ich auch verstehe was ich da eingestellt habe :D

    Einmal editiert, zuletzt von BruderB (8. September 2021 um 19:23)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!