logging modul funktioniert nicht beim autostart

  • 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.


    https://docs.python.org/3/howt…ml#basic-logging-tutorial


    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.

  • BruderB

    Changed the title of the thread from “logging modul beim autostart” to “logging modul funktioniert nicht beim autostart”.
    • Best Answer
    • Official Post

    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/do…x.html#creating-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/do…x.html#creating-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

    Edited once, last by BruderB ().

  • BruderB

    Selected a post as the best answer.