Ankündigung

Einklappen
Keine Ankündigung bisher.

Support Thread für Operationlog Plugin

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

    Support Thread für Operationlog Plugin

    Der Thread Name sagt alles ...


    #2
    seit den SH - update 1.8 / 1.8.1 loggt das Operationlog Plugin bei mir nicht mehr:
    Code:
    mystatuslog:
        plugin_name: operationLog
        name: mystatuslog
        #instance: mystatuslog
        maxlen: 5
        cache: true
        logtofile: true
        filepattern: yearly_log-{name}-{year:04}.log
    
    myOfenlog:
        plugin_name: operationLog
        name: myOfenlog
        #instance: myOfenlog
        maxlen: 10
        cache: true
        logtofile: true
        filepattern: yearly_log-{name}-{year:04}.log

    Code:
    2021-02-07 09:33:38 WARNING lib.plugin Plugin section 'myOfenlog' uses same class 'OperationLog' and instance 'default' as plugin section 'mystatuslog'
    2021-02-07 09:33:38 WARNING lib.plugin Plugin section 'watchdoglogger' uses same class 'MemLog' and instance 'default' as plugin section 'statuslogger'

    wenn ich in der plugin.yaml eine Instance mit angebe:
    Code:
    021-02-07 09:40:54 WARNING lib.model.smartplugin Plugin 'operationlog': Only multi-instance capable plugins allow setting a name for an instance
    2021-02-07 09:40:54 WARNING plugins.operationlog Plugin 'operationlog': Only multi-instance capable plugins allow setting a name for an instance
    2021-02-07 09:40:54 WARNING lib.model.smartplugin Plugin 'operationlog': Only multi-instance capable plugins allow setting a name for an instance
    2021-02-07 09:40:54 WARNING plugins.operationlog Plugin 'operationlog': Only multi-instance capable plugins allow setting a name for an instance

    Kommentar


      #3
      Bei mir funktioniert es ohne Instanzen. Die Warnung kannst du dann ignorieren.

      In den Items sieht es dann zB so aus:

      Code:
      l1:
          type: str
          olog: log1
          olog_rules: '*:value'
      
      l2:
          type: str
          olog: log2
          olog_rules: '*:value'
      Wichtig ist die Angabe von olog_rules; anders als in der Doku beschrieben wird im Default nämlich nicht geloggt. Wenn du eigene Rules definiert hast, ist das okay; wenn du keine hast, brauchst du die Zeile "olog_rules: '*:value'"

      Kommentar


        #4
        Da ich das die Tage schon mit OnkelAndy diskutiert hatte, habe ich noch einen Fix eingebaut. Das Standardverhalten entspricht jetzt wieder dem Stand der Dokumentation, man muss olog_rules jetzt nicht mehr ausdrücklich definieren.

        Kommentar


          #5
          hab die Zeile "olog_rules: '*:value'" hinzugefügt und es loggt weider.

          Allerdings habe ich noch ein anderes Problem(chen) mit folgender Konstellation:


          Code:
          Ofen:
              Temperatur:
                  type: num
                  visu_acl: ro
                  cache: True
                  database: yes
                  database_maxage: 365
                  knx_dpt: 9
                  knx_listen: 4/5/1
                  eval: int(value)
                  telegram_info: ofen
              Tuer:
                  type: bool
                  visu_acl: ro
                  cache: True
                  database: yes
                  database_maxage: 365
                  knx_dpt: 1
                  knx_listen: 4/5/7
                  telegram_info: ofen
                  olog: myOfenlog
                  olog_level: warning
                  [MARKIEREN]olog_txt: "{mvalue} Temperatur: {eval=sh.Ofen.Temperatur()}°C"
                  olog_rules:
                      - True:Ofentür Offen
                      - False:Ofentür geschlossen[/MARKIEREN]
          Code:
          2021-02-08  21:04:59 ERROR    lib.item.item       Item Ofen.Tuer: problem running <bound method OperationLog.update_item of <plugins.operationlog.OperationLog object at 0x7fc0d469b7b8>>: name 'sh' is not defined
          > Traceback (most recent call last):
          >   File "/usr/local/smarthome/lib/item/item.py", line 1352, in __update
          >     method(self, caller, source, dest)
          >   File "/usr/local/smarthome/plugins/operationlog/__init__.py", line 352, in update_item
          >     self._item_conf[item.id()]['olog_eval_res'].append(eval(expr))
          >   File "<string>", line 1, in <module>
          > NameError: name 'sh' is not defined
          2021-02-08  21:05:02 ERROR    lib.item.item       Item Ofen.Tuer: problem running <bound method OperationLog.update_item of <plugins.operationlog.OperationLog object at 0x7fc0d469b7b8>>: name 'sh' is not defined
          > Traceback (most recent call last):
          >   File "/usr/local/smarthome/lib/item/item.py", line 1352, in __update
          >     method(self, caller, source, dest)
          >   File "/usr/local/smarthome/plugins/operationlog/__init__.py", line 352, in update_item
          >     self._item_conf[item.id()]['olog_eval_res'].append(eval(expr))
          >   File "<string>", line 1, in <module>
          > NameError: name 'sh' is not defined

          Kommentar


            #6
            Hm. Die lokale Variable `sh` wird im Plugin (aktuelle Version aus develop) mit self.get_sh() belegt, sollte also verfügbar sein.

            Vielleicht kann da einer von den "Alten" was zu sagen, da stecke ich (noch) nicht so weit drin. Ansonsten kann ich da die Tage mal reinschauen, aber versprechen kann ich da noch nix.

            Welche Plugin-Version nutzt du denn? (Nur, damit wir über den selben Code reden...)

            Kommentar


              #7
              Ich würde sagen, die Zeile in der Run Methode sh = self.get_sh() muss da auch ins update_item rein. Denke vor Zeile 350.
              In dem Zusammenhang würde es sich auch noch anbieten, shtime an beiden Stellen einzufügen

              from lib.shtime import Shtime

              self.shtime = Shtime.get_instance()

              shtime = self.shtime

              Kommentar


                #8
                Oh ja... ich habe gesehen, dass die in run() schon ausgewertet werden (wieso eigentlich?), dass das in update_item() nochmal passiert, habe ich an der Stelle wohl übersehen.

                [edit] Fix ist drin, gerne mal testen.
                Zuletzt geändert von Morg; 08.02.2021, 23:19.

                Kommentar


                  #9
                  Wäre es nicht sinnvoll die Logging Plugins memlog, operationlog und datalog auf Dauer zu einem zusammen zu führen?

                  Kommentar


                    #10
                    Entweder das, oder ggf. ins item-Logging zu integrieren?

                    Ich habe deshalb aber auch noch nicht tiefer ins olog-Plugin reingearbeitet.

                    Kommentar


                      #11
                      Zitat von Morg Beitrag anzeigen
                      Fix ist drin, gerne mal testen.

                      👍 jetzt loggt der operationlog wieder

                      Kommentar

                      Lädt...
                      X