Ankündigung

Einklappen
Keine Ankündigung bisher.

Logik - Ereignis in LogDatei schreiben ?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Logik - Ereignis in LogDatei schreiben ?

    Hallo,

    würde gerne mit dem Aufruf einer Logik eine Zeile in eine Logdatei schreiben.

    Gibt es hierfür einen Befehl ?

    Die Logdatei soll eine X-beliebige leere Textdatei sein.

    Danke

    #2
    Schau Dir mal das Plugin Datalog an. Das kann sowas machen für items. Daraus kannst Du bestimmt ableiten, wie Du das sinnvoll für eine Logik anpasst.

    Gruß,
    Bernd


    Kommentar


      #3
      Zitat von bmx Beitrag anzeigen
      Schau Dir mal das Plugin Datalog an.
      Hallo Bernd,
      wo finde ich das Plugin "Datalog"?

      Danke
      Grüße
      Dieter
      Viele Grüße
      Dieter

      Kommentar


        #4
        Hallo Dieter,
        das Plugin findest Du unter /smarthome.pi/plugins/
        Gruß
        Hans

        Kommentar


          #5
          Hallo Hans,
          danke; Ich war noch im Master, nicht im Develop-Zweig;
          Viele Grüße
          Dieter

          Kommentar


            #6
            Kann mir noch kurz jemand erklären wie ich dort ran kommen ?

            Das Plugin ist bei mir nicht vorhanden !

            Danke und schönen Gruß

            Kommentar


              #7
              Schau mal hier ins Github bei den Plugins im Develop-Zweig.

              Gruß,
              Bernd

              Kommentar


                #8
                Perfekt !! Habs gefunden ... funktioniert... Hilft mir woanders auch weiter !!

                Ich suche allerdings eher nen Logger für meine Logiken, vor allem auch zum debuggen...

                So nach dem Motto.

                sh.log("Variable A hat den Wert" + strname )

                Bisher benutze ich dafür E-Mail..
                Allerdings darf ich nur 1000 pro Tag versenden ;-)))))))



                Kommentar


                  #9
                  Du kannst aus der Logik heraus auf das logging von sh.py zugreifen, z.B.:
                  Code:
                  logger.debug("bla bla debug log")
                  logger.info("foo bla foo info log")
                  die Einträge kommen dann ins var/log/smarthome.log(je nach Log-Level)

                  Kommentar


                    #10
                    Naja eigentlich wollte ich es sauber getrennt in einer separaten Datei haben.
                    Aber wenn es da noch nichts gibt, muss ich mir wohl etwas einfallen lassen.
                    Danke

                    Kommentar


                      #11
                      Nur eine Logik oder mehrere? Soll das im Log-Format von sh.py sein oder ne einfache Textdatei?

                      Kommentar


                        #12
                        Du kannst aus der Logik eine neue Logdatei so schreiben:

                        Code:
                        mylogger = logging.getLogger('mylogiklogger')
                        hdlr = logging.FileHandler('/usr/local/smarthome_dev/var/log/mylogik.log')
                        formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
                        hdlr.setFormatter(formatter)
                        mylogger.addHandler(hdlr)
                        mylogger.setLevel(logging.INFO)
                        mylogger.info("Testaufruf")
                        ...
                        
                        hdlr.close()
                        mylogger.removeHandler(hdlr)
                        Die letzten zwei Zeilen sind wichtig, damit nicht jeder Aufruf der Logik offene Filedeskriptoren hinterläßt.
                        Die sollten auf jeden Fall aufgerufen werden in der Logik vor dem verlassen dieser.

                        Code:
                        hdlr.close()
                        mylogger.removeHandler(hdlr)

                        Kommentar


                          #13
                          Und ich werf mal folgende Zeilen in den Ring, welche ich gerade für solche Debugs verwende:
                          Code:
                              with open("/usr/smarthome/var/log/Blablabla.log","a") as logfile:
                               print(time.ctime(), '- Event xy aufgetreten', file=logfile)
                          Schreibt einfach eine Zeile ins separate Log, kann man natürlich auch durch entsprechenden Aufruf im Print bzgl. Variablen usw. verfeinern...

                          Kommentar

                          Lädt...
                          X