Ankündigung

Einklappen
Keine Ankündigung bisher.

PLUGIN-Defs aus Logiken aufrufen (Verständnisproblem?)

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

    PLUGIN-Defs aus Logiken aufrufen (Verständnisproblem?)

    Ich habe mir ein Pligin gebastelt. Hier werden in der Datenbank täglich Werte fortgeschreiben und ausgewertet. Das Plugin läuft seit Wochen stabil (ich nutze mysql).
    Aus den gesammelten Daten erstellen ich nach verschieden Kriterien excel-Tabellen. Diese Daten brauche ich zu unterschiedlichen Zeitpunkten.
    Wenn nur das Plugin läuft ist alles OK.

    Listen und Auswertungen und smartVISU alles perfekt.

    Jetzt wollte ich einzelne Listen eventgesteuert aus der Visu oder über das Backend (perfekt für solche Zwecke!!9 abrufen. Also kurzerhand einige Logiken gebastelt und zu den gewünschten Zeitpunkten gestartet. alles bestens.

    Hier beginnt mein kleines Problem:

    Code:
    if self._traceaktie>0:
        self.logger.info("INIT db_fehlt ? = {0}".format(self._sw_DBfehlt))
        self.logger.info("*************************")
        self.A02_check_db()
    
    def run(self):
        self.alive = True
        # if you want to create child threads, do not make them daemon = True!
        # They will not shutdown properly. (It's a python bug)
        self.logger.info("hier RUN(self)")
    
    self.A03_auswertung()
    
    def stop(self):
        self.alive = False
    #-------------------------------------------------- A01_connect_db -----------------------------------------------------------
    def A01_connect_db(self):
        myanzOpenConnect = 0
        myanzOpenConnect = self._myanzOpenConnect
    
    if self._tracetest>0:
        self.logger.info("*************************")
        self.logger.info("A01_CONNECT DB")
        self.logger.info("*************************")
    Im Plugin werdendie Auswertungen alle per def A0x_tuetwas(self) mit den (self) aufgerufen.
    Beim Abruf der Liste aus der Logik fehlt mir das (self)
    Konsequenz . : if self._tracetest>0:
    self.logger.info( blabla) werden nicht mehr durchgeführt.

    Hier setzt jetzt mein Wissen aus. Wer kann mir einen Weg aufzeigen, das self in der Logik bekannt zu machen oder innerhlb des Plugins nach dem Aufruf
    sh.pluginname.A0x_tuwas in der DEF A0x_tuwas das self neu zu ermitteln.
    Manchmal hilft leider nur ein log weiter!

    Danke für jede Hilfe!
    Zuletzt geändert von bmx; 24.10.2018, 06:24. Grund: Bitte [CODE] statt [QUOTE] verwenden sonst gehen Einrückungen verloren!

    #2

    Als Vorwort: Die folgenden Infos sind Standard Python und haben mit SmartHomeNG nichts zu tun
    • mit self. Sprichst Du aus einer Methode einer Klasse eine andere Methode der selben Klasse an. Außerhalb einer Klasse hat self. deshalb nichts verloren.
    • Wenn Du eine Methode von außerhalb der Klasse ansprechen möchtest, musst Du den Namen der Instanz-Variable dem Methodennamen voranstellen. (Also statt self.<Methode>(...) muss Du <Instanz>.<Methode>(...) verwenden)
    Für Deine Methode def A0x_tuetwas(self): bedeutet das: Innerhalb der Klasse des Plugins sprichst Du sie mit self.A0x_tuetwas() an, außerhalb musst Du die Methode über den Instanznamen des Plugins ansprechen (Wichtig: Instanz-Namen, nicht Klassen-Namen des Plugins), also: <Instanz>.A0x_tuetwas().

    Der Instanz-Name wird beim Start von SmartHomeNG vergeben und ist der Name des Abschnitts der ../etc/plugins.yaml in dem Du das Plugin konfiguriert hast.

    self. hat in Logiken nichts verloren und kann dort nicht genutzt werden!!!.

    Das Aufrufen des Loggings muss natürlich auch ohne self. erfolgen. Einfach: logger.info(...) Wichtig ist dabei, dass Du in der ../etc/logging.yaml das Logging für die Logik konfigurierst. Du kannst für jede Logik das Logging eigenständig konfigurieren. Du musst dazu einen Logger mit dem Namen logics.<Name der Logik>: einrichten. Dabei ist <Name der Logik> der Name, den Du der Logik gegeben hast (nicht der Dateiname, sondern der Name des Abschnitts in der ../etc/logic.yaml, in dem Du die Logik definiert hast.


    Ein Hinweis zu Namenskonventionen: Methoden, die mit einem Underline beginnen werden normalerweise als privat angesehen und sollten nicht von Außerhalb des Python Moduls aufgerufen werden. (Deshalb werden diese Methoden z.B. von Sphinx beim erstellen einer Dokumentation normalerweise übergangen).
    Zuletzt geändert von Msinn; 22.10.2018, 20:49.
    Viele Grüße
    Martin

    There is no cloud. It's only someone else's computer.

    Kommentar


      #3
      Hallo Martin,
      danke für Deine ausführliche Erläuterung, Ich werde mich nach Deiner Anleitung einmal leiten lassen und weiter testen.
      python ist leider eine "Fremdsprache" für mich, aber alles ist lernbar.

      Den Hinweis auf Python hatte ich schon erwartet, aber ich hing zwischen Smartvisu und smarthome. Welchem phyton-Guru hätte
      ich mein Problem in kurzen Worten beschreiben können?

      Deshalb noch einen besonderen Dank für Deine Hilfe,

      Wolfgang


      Kommentar


        #4
        Eine Korrektur: In der logging.yaml muss der logger logics.<Name der Logik> heißen. Das konnte ich vorhin unterwegs nicht nachschauen. Ich habe das im Originalpost auch korrigiert.
        Viele Grüße
        Martin

        There is no cloud. It's only someone else's computer.

        Kommentar


          #5
          Danke Martin für die Korrektur!
          Eine Frage tauchte auch bei mir noch auf:

          Innerhalb dem Plugin rufe ich A0x.tuetwas((Self) mit dem Self auf, damit gelingt mit das Self.logging,

          Beim Aufruf aus der Logik nach Deiner Anleitung mit <Instance>.tuetwas

          In def.tuetwas steht aber Self.logger( ..). Hier klemmt es noch.
          Zuletzt geändert von schloessl; 22.10.2018, 21:30.

          Kommentar


            #6
            Was klemmt da???? self.logger ist in der Methode des Plugins in Ordnung. Nur wenn Du in der Logik loggen willst, musst Du es ohne self. aufrufen (weil der Logik Code nicht innerhalb einer Klasse liegt)

            Wenn, muss da was anderes klemmen, aber Hellsehen kann ich nicht. Deine Beschreibung ist schon sehr dürftig.
            Viele Grüße
            Martin

            There is no cloud. It's only someone else's computer.

            Kommentar


              #7
              Wenn du von außerhalb der Klassendefinition über die Instanz die Methoden der Klasse aufrufst, passiert etwas "Python-Magie": der Methoden Parameter self wird automatisch hinzugefügt und ist innerhalb der Methode verfügbar als Verweis aus die Instanz selbst. Dadurch ist die Klassenmethode in der Lage, auf andere Variablen und Methode (oder Objekte) der Klasse zuzugreifen, wie z.B. hier auf self.logger.

              (Vielleicht solltest du hinterfragen, ob es nicht sinnvoll wäre, einen dieser unendlich vielen Python-Onlinekurse durchzugehen, bevor du dich entscheidest, deine Systeme einem Python-DIY-SmartHome Seerver anzuvertrauen. Python, so elegant es auch erscheint, hält so den einen oder anderen Fallstrick bereit, bzw mach ertst richtig Spaß, wenn man einigermaßen sicher untewegs ist.)

              Kommentar


                #8
                Danke auch an waldi für Deine Erläuterungen! Leider bringen sie mich nicht weiter.
                Ich bin heute noch einmal in die Tiefen der plugins und der Logics eingestiegen und habe mehr richtig gemacht als ich gestern abend glaubte.
                Trotzdem habe ich weiter das Problem.
                In der logic hatte ich bereits den Aufruf mit <Instanz>.A0x_tuetwas().ausgeführt.Hier musste ich allerdings schon vorher per sh.portfolio.A0x_tuetwas().arbeiten, sonst gab es Fehler.
                Mit diesem Aufruf läuft das Programm bis auf eine kleine , mir aber wichtige Ungereimtheit fehlerfrei.
                Im Programm baue ich durch tägliche Datensammlungen umfangreiche Tabellen auf, die auch ausgewertet und erstellt werden.
                Nach den DEF-Unterprogrammen zur Datenbank, Prüfen der Datenbank, Eröffner der DB, Tabelle prüfen, evtl neu anlegen,usw
                erforlgt die def_Auswertung. in der verschiedene Excel-Tabellen aufbereitet werden, auf einen Windowspfad kopiert werden. Gleichzeitig werden Items für dir smartVISU aufbereitet. Alles Gut !
                In der Auswerteroutine DEF A03_Auswertungen werden weiter defs wir create_execl_liste1 usw ausgerufen, jeweils per self.A015_liste1(self).
                Solange auch der Start der def A03_Auswertungen im Plugin erfolgt, kann ich per self.logger ..xx Daten und Abläufe verfolgen.


                Sobald ich aber aus einer Logic die A03_auswertungen aufrufe, läuft das Programm zwar aber die self.logger.xx-Befehle verschwinden ins nichts.
                Hintergedanke: einzelne Auswertungen über Logics aus der Visu/Backend_NG zu aktivieren!
                Das ist mein einziger Kummer!

                Hier und in ersten Chat einige Sourceausschnitte.
                Code:
                2018-10-23 14:09:44 INFO Main Init Scheduler
                2018-10-23 14:09:51 INFO Main self._applications['database'] = {'Description': 'Webinterface database of plugin database', 'Conf': {'/static': {'tools.staticdir.on': True, 'tools.staticdir.dir': 'static'}, '/': {'tools.auth_basic.on': False, 'tools.auth_basic.checkpassword': <bound method Http.validate_password of <modules.http.Http object at 0x75e55630>>, 'tools.auth_basic.realm': 'shng_http_webif', 'tools.staticdir.root': '/usr/local/smarthome/plugins/database/webif'}, '/gstatic': {'tools.staticdir.on': True, 'tools.staticdir.dir': '/usr/local/smarthome/modules/http/webif/gstatic'}}, 'Webifname': 'database', 'Mount': '/database', 'Instance': '', 'Pluginclass': 'Database', 'Pluginname': 'database'}
                2018-10-23 14:09:51 INFO Main Initialized plugin 'database' from from section 'database_mysql'
                2018-10-23 14:09:51 INFO Main Loading '/usr/local/smarthome/plugins/aaportfolio/plugin.yaml' to 'OrderedDict'
                2018-10-23 14:09:51 INFO Main plugin 'aaportfolio': has no parameter definitions in metadata
                2018-10-23 14:09:51 INFO Main plugin 'aaportfolio': has no item definitions in metadata
                2018-10-23 14:09:53 INFO Main Loading '/usr/local/smarthome/plugins/aaportfolio/locale.yaml' to 'dict'
                2018-10-23 14:09:53 INFO Main plugin 'aaportfolio': No parameter definitions found in metadata
                2018-10-23 14:09:53 INFO Main INIT_Tracetest = 1
                2018-10-23 14:09:53 INFO Main INIT_TraceUpdate = 1
                2018-10-23 14:09:53 INFO Main INIT db_fehlt ? = True
                2018-10-23 14:09:53 INFO Main *************************
                2018-10-23 14:09:53 INFO Main hier *************** A02_check_db *******************
                2018-10-23 14:09:53 INFO Main *************************
                2018-10-23 14:09:53 INFO Main A01_CONNECT DB
                2018-10-23 14:09:53 INFO Main *************************
                2018-10-23 14:09:53 INFO Main Database version : ('10.1.23-MariaDB-9+deb9u1',)
                2018-10-23 14:09:53 INFO Main Prüfe ob Database portfolio vorhanden ist!
                2018-10-23 14:09:53 INFO Main Database portfolio ist vorhanden
                2018-10-23 14:09:53 INFO Main Initialized plugin 'aaportfolio' from from section 'portfolio'
                2018-10-23 14:09:53 INFO Main Load of plugins finished
                2018-10-23 14:10:22 INFO logics.A02_DB_AUSW A02_DB_AUSW.py
                2018-10-23 14:10:22 INFO logics.A02_DB_AUSW A21_tracewerte ändern
                2018-10-23 14:10:22 INFO logics.A02_DB_AUSW traceTEST : 1
                2018-10-23 14:10:22 INFO logics.A02_DB_AUSW A03_auswertung
                
                
                2018-10-23 14:11:39 INFO logics.A02_DB_AUSW A15_array_aufbauen
                2018-10-23 14:11:39 INFO logics.A02_DB_AUSW A13_remove_old_logfiles
                2018-10-23 14:11:39 INFO logics.A02_DB_AUSW A12_create_excel
                2018-10-23 14:11:41 INFO logics.A02_DB_AUSW A15_array_aufbauen_2
                2018-10-23 14:11:41 INFO logics.A02_DB_AUSW A25_DB_CLOSE
                Hier über Backend-SHNG die Logic A05_problem.py gestartet !

                2018-10-23 14:13:51 INFO logics.A05_problem A05_problem.py

                weitere loggings zu A05_problem verschwinden

                SmartHomeNG Logik: A05_problem:
                Code:
                #!/usr/bin/env python
                # vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab
                ################################################## #######################
                #
                
                import datetime, time
                import argparse
                import os.path
                import warnings
                import subprocess
                import sys
                from decimal import Decimal
                
                f = '%Y-%m-%d %H:%M:%S'
                strkz = " "
                Abruf = " "
                l[COLOR=#FF0000]ogger.info("A05_problem.py")
                sh.portfolio.A26_problem()[/COLOR]
                Das weitere ist ein Beispiel des Ablaufes
                Code:
                #logger.info("A15_array_aufbauen")
                #sh.portfolio.A15_arrayaufbau()
                #sh.pfolio.anf(True)
                
                #logger.info("A13_remove_old_logfiles")
                #sh.portfolio.A13_remove_old_logfiles()
                
                #logger.info("A12_create_excel")
                #Abruf = "A"
                #sh.portfolio.A12_create_excel(Abruf)
                
                #logger.info("A15_array_aufbauen_2")
                #sh.portfolio.A15_arrayaufbau()
                A26_problem
                Code:
                def A26_problem(self):
                    self._tracetest = 1
                    if self._tracetest>0:
                        self.logger.info("hier A26_problem")
                        self.logger.info("*************************")
                
                self.logger.info("xxxxxxxxxx ohne if xxxxxxxxxxxxxxx")
                Ich vermute das Problem rund um das "self" . Beim Aufrug aus der Logic fehlt dieser natürlich.
                Oder meine logging.yaml läst alles verschwinden. Die loggiing_muster.yaml bringt leider nur Fehler
                Ich arbeite mit eine alten logging.yaml.
                Glaubt es mir, ich habe schon viele Python-Seite aller Foren durchsucht!

                Bin ich irgendwo auf dem Holzweg?
                Danke für eine weiter Hilfe!

                Dank und Gruß
                Wolfgang



                Zuletzt geändert von bmx; 24.10.2018, 06:28.

                Kommentar


                  #9
                  Vergiss mal Deine Fixierung, dass immer etwas mit self nicht stimmt.

                  Das Logging hört auf, weil Deine Methode A26_problem() in einen Fehler läuft.

                  Nach dem was Du gepostest hast, sehe ich erstmal eine Einrückungsfehler nach der if Zeile.

                  Weitere Ursachen können in dem Teil des Plugin Codes liegen, den Du nicht gepostet hast. Wie hast Du z.B. Im Plugin den Logger initialisiert?
                  Viele Grüße
                  Martin

                  There is no cloud. It's only someone else's computer.

                  Kommentar


                    #10
                    schloessl Bitte [ CODE ] statt [ QUOTE ] verwenden sonst gehen Einrückungen verloren! Ich habe das oben mal versucht anzupassen aber bitte kontrolliere das nochmal! Das ist sonst nicht nachvollziehbar und die Bereitschaft zu helfen sinkt drastisch ...
                    Zuletzt geändert von bmx; 24.10.2018, 06:29.

                    Kommentar


                      #11
                      Danke an alle Beteiligten,

                      ich habe mir die logging.yaml einmal vorgenommen. Von der alten Version auf die neueren default.yaml gewechselt und Fehler beseitigt und meine Parameter eingebaut.
                      Und siehe da, alles läuft (fast) wie erhoft!
                      "Vergiss mal Deine Fixierung, dass immer etwas mit self nicht stimmt" von Msinn dieser Satz hat mich wachgerüttelt!
                      Ich habe wirklich immeran meiner Programmierung gezweifelt, Entschuldigung!

                      Das fast bezieht sich auf die Tatsache,daß ich jetzt das Logging immer mehrfach bekomme.Die Aufteilung in unterschiedliche Log-Files ist vorerst die Zwischenlösung.
                      Ich forsche weiter!
                      Das Problem ist gelöst und habe dazugelernt!

                      Mein logging.yaml, falls es jemand auf Anhieb sieht.
                      Danke für die Unterstützung!

                      Code:
                      %YAML 1.1
                      ---
                      version: 1
                      shng_version: x
                      disable_existing_loggers: false
                      
                      formatters:
                      
                          shng_busmonitor:
                              format: '%(asctime)s;%(message)s;'
                              datefmt: '%Y-%m-%d;%H:%M:%S'
                      
                          shng_simple:
                              format: '%(asctime)s %(levelname)-8s %(name)-17s %(message)s'
                              datefmt: '%Y-%m-%d  %H:%M:%S'
                      
                          shng_detail:
                              format: '%(asctime)s %(levelname)-8s %(module)-17s %(threadName)-12s %(message)s  --  (%(filename)s:%(funcName)s:%(lineno)d)'
                              datefmt: '%Y-%m-%d %H:%M:%S %Z'
                      
                          shng_items:
                              format: '%(asctime)s %(levelname)-8s %(module)-12s %(message)s'
                              datefmt: '%Y-%m-%d %H:%M:%S'
                      
                      filters:
                      
                          loggerfilter:
                              (): lib.logutils.Filter
                              name: knx_busmonitor
                      
                      handlers:
                      
                          shng_warnings_file:
                              class: logging.handlers.TimedRotatingFileHandler
                              formatter: shng_simple
                              level: WARNING
                              utc: false
                              when: midnight
                              backupCount: 7
                              filename: ./var/log/smarthome-warnings.log
                              encoding: utf8
                      
                          shng_details_file:
                              class: logging.handlers.TimedRotatingFileHandler
                              formatter: shng_simple
                              level: DEBUG
                              utc: false
                              when: midnight
                              backupCount: 7
                              filename: ./var/log/smarthome-details.log
                              encoding: utf8
                      
                          shng_busmonitor_file:
                              class: logging.handlers.TimedRotatingFileHandler
                              formatter: shng_busmonitor
                              level: DEBUG
                              when: midnight
                              backupCount: 7
                              encoding: utf8
                              filename: ./var/log/knx_busmonitor.log
                      
                          develop_file:
                              class: logging.handlers.TimedRotatingFileHandler
                              formatter: shng_detail
                              level: DEBUG
                              utc: false
                              when: midnight
                              backupCount: 7
                              filename: ./var/log/smarthome-develop.log
                              encoding: utf8
                      
                          portfolio_file:
                              class: logging.handlers.TimedRotatingFileHandler
                              formatter: shng_detail
                              level: DEBUG
                              utc: false
                              when: midnight
                              backupCount: 7
                              filename: ./var/log/smarthome-portfolio.log
                              encoding: utf8
                      
                          console:
                              class: logging.StreamHandler
                              formatter: shng_simple
                              stream: ext://sys.stdout
                      
                      loggers:
                      
                          __main__:
                              # WARNING LEVEL to add restart log messages to further logfiles
                              handlers: [shng_details_file]
                              level: DEBUG
                      
                          knx_busmonitor:
                              level: INFO
                              handlers: [shng_busmonitor_file]
                      
                          # ====================================
                          # Loggers for Python modules/packages
                          # ------------------------------------
                      
                      #    cherrypy.error:
                      #        handlers: [shng_details_file]
                      #        level: INFO
                      
                      #    jinja2:
                      #        handlers: [shng_details_file]
                      #        level: INFO
                      
                          # ================================
                          # Loggers for SmartHomeNG modules
                          # --------------------------------
                          modules.http:
                              handlers: [shng_details_file]
                              level: INFO
                      
                          # ================================
                          # Loggers for SmartHomeNG plugins
                          # --------------------------------
                      
                          # If the logger is created with logging.getLogger(__name__)
                          # the logger name is plugins.<plugin-shortname>
                      
                      #    plugins.backend:
                      #        handlers: [shng_details_file]
                      #        level: INFO
                      
                      #    plugins.cli:
                      #        handlers: [shng_details_file]
                      #        level: WARNING
                      
                          plugins.database:
                              handlers: [shng_details_file]
                              level: INFO
                      
                      #    plugins.onewire:
                      #        handlers: [shng_details_file]
                      #        level: INFO
                      
                          plugins.aaportfolio:
                              handlers: [portfolio_file]
                              level: INFO
                      
                          # ==================================
                          # Loggers for SmartHomeNG libraries
                          # ----------------------------------
                      
                      
                      #    lib.connection:
                      #        handlers: [develop_file]
                      #        level: WARNING
                      
                          lib.item:
                              handlers: [develop_file]
                              level: WARNING
                      
                          lib.logic:
                              handlers: [develop_file]
                              level: INFO
                      
                          # ==============================
                          # Loggers for SmartHomeNG logics
                          # ------------------------------
                      
                          logics.ex_logging:
                              handlers: [shng_details_file]
                              level: INFO
                      
                          logics.ex_persist:
                              handlers: [shng_details_file]
                              level: INFO
                      
                          logics.A02_aktien:
                              handlers: [portfolio_file]
                              level: INFO
                      root:
                          level: INFO
                      #    handlers: [shng_warnings_file]
                      #    level: INFO
                          handlers: [shng_details_file, console]
                      smarthome-details.log (alles doppelt und auch portfolio.log-werte vorhanden

                      2018-10-24 14:23:26 WARNING __main__ -------------------- Init SmartHomeNG 1.5.1.master (cc1288de) --------------------
                      2018-10-24 14:23:26 WARNING __main__ -------------------- Init SmartHomeNG 1.5.1.master (cc1288de) --------------------
                      2018-10-24 14:23:26 WARNING __main__ Running in Python interpreter 'v3.5.3 final' on linux platform
                      2018-10-24 14:23:26 WARNING __main__ Running in Python interpreter 'v3.5.3 final' on linux platform
                      2018-10-24 14:23:26 INFO lib.scheduler Init Scheduler
                      2018-10-24 14:23:26 INFO __main__ Init loadable Modules
                      2018-10-24 14:23:26 INFO __main__ Init loadable Modules


                      Kommentar


                        #12
                        in den root logger solltest Du fast nichts rein schreiben. Alles was Du loggst wird außer an die logger an die Du das schickst, auch noch zusätzlich an den root Logger geschickt (Python Standardverhalten). Deshalb sollten da nur Warnungen rein (genau das was Du auskommentiert hast).

                        Am Beispiel eines Loggers:

                        Code:
                            logics.ex_persist:
                                handlers: [shng_details_file]
                                level: INFO
                        Schickt aus der Logik ex_persist alle Logeinträge (außer DEBUG) an das Details Log.

                        Alle Logeinträge werden dann noch an den root Logger geschickt. Dem hast Du gesagt, dass alles außer DEBUG (INFO und höher) in das Details Log geschrieben werden sollen. Das ist der doppelte Log Eintrag.

                        Deshalb:
                        Code:
                        root:
                            level: WARNING
                            handlers: [shng_warnings_file]
                        level: WARNING sorgt dafür, dass der root Logger nur WARNUNGEN und höher ins Log schreibt. Der Handler sorgt dafür, dass Du die WARNUNGEN und Fehler in ein eigenes Log bekommst (und zwar alle). Damit übersieht man die Warnungen und Fehler nicht mehr so leicht.

                        Und was Du im Details Log haben möchtest, legst Du für jedes Plugin, für jede Logik und jede Lib einzeln fest.

                        Damit kannst Du z.B. während der Entwicklung für ein Plugin den Level auf DEBUNG setzen, ohne in allen DEBUG Ausgaben von shNG und den Plugins zu ertrinken.


                        Viele Grüße
                        Martin

                        There is no cloud. It's only someone else's computer.

                        Kommentar


                          #13
                          Nachtrag:

                          Ich schaue bei mit regelmäßig ins smarthome-warnings Log, um zu sehen ob alles in Ordnung ist.
                          Bei Bedarf (entweder bei Störungen oder auch so) schaue ich ins smrthome-details.log, um mir entsprechende Details anzusehen.

                          Für die Entwicklung nutze ich noch ein drittes Log, um mir im Details Log nicht zu viel Unordnung zu schaffen (mit DEBUG Ausgaben bzw. mit INFO Ausgaben die ich mir normal nicht loggen lassen möchte (z.B. aus einzelnen Libs):

                          Code:
                          handlers:
                          
                              shng_develop_file:
                                  class: logging.handlers.TimedRotatingFileHandler
                                  formatter: shng_simple
                                  level: WARNING
                                  utc: false
                                  when: midnight
                                  backupCount: 7
                                  filename: ./var/log/smarthome-develop.log
                                  encoding: utf8
                          
                              # ================================
                              # Loggers for SmartHomeNG modules
                              # --------------------------------
                              modules.http:
                                  handlers: [shng_develop_file]
                                  level: INFO
                          
                              # ================================
                              # Loggers for SmartHomeNG plugins
                              # --------------------------------
                              plugin.in_entwicklung:
                                  handlers: [shng_develop_file]
                                  level: DEBUG
                          Ausgaben aus Libs und Modulen logge ich normalerweise ins smarthome-details Log nur mit Level WARNING (oder gar nicht), da sie für den Betrieb von sgNG eigentlich nicht von Interesse sind (und zum Teil auch verwirren können, wenn man nicht tief in den Details von shNG steckt). Die Warnungen bekomme ich trotzdem, denn sie gehen über den root Logger ja ind smarthome-warnings Log.



                          Viele Grüße
                          Martin

                          There is no cloud. It's only someone else's computer.

                          Kommentar


                            #14
                            Danke Martin,

                            perfekt!

                            Hochachtung für die perfekte Darstellung. Ich hätte schon Deinen ersten Beitrag sorgfältiger lesen sollen!
                            Sorry.
                            Herzlichen Dank und Gruß
                            Wolfgang

                            Kommentar

                            Lädt...
                            X