Start Schwierigkeiten mit Logging

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • schoendort
    Extension Master
    • 06.05.2020
    • 131

    #1

    Start Schwierigkeiten mit Logging

    Hallo Zusammen,

    ich würde gerne ein Plugin für die Anbindung an einen Bestway Lazy-Spa Whirlpool bauen.
    Hab die API schon gefunden und die notwendigen Requests im Postman zusammengestellt, und habe mich jetzt mal an ein PERL-Script getraut, damit ich die SDK nutzen kann (komme normalerweise aus der Java (Backend) und JavaScript Welt).

    Webservice Aufrufe und Json-Config-File lesen und schreiben funktioniert so weit, mein momentanes Problem habe ich mit dem Logging und den Variablen für die Pfade. Ganze Script ist im Anhang.

    Wenn ich es so Aufrufe funktioniert das Script:
    Code:
    #!/usr/bin/perl
    
    require HTTP::Request;
    
    use LWP::UserAgent;
    
    use Time::HiRes;
    use LoxBerry::JSON;
    use LoxBerry::IO;
    use LoxBerry::Log;
    use LoxBerry::System;
    
    LOGSTART "Bestway Lazy-Spa plugin started";
    
    LOGINF "$lbplogdir + $lbpconfigdir";
    
    my $cfgfile = "$lbpconfigdir/config.json";
    
    my $log = LoxBerry::Log->new (
    name => 'Bestway Lazy-Spa',
    filename => "$lbplogdir/lazyspa.log",
    append => 1,
    stdout => 1
    );
    
    #hier mein eigentliches Script
    Output:
    ================================================== ==============================
    <LOGSTART> 14.12.2021 23:36:07 TASK STARTED
    <LOGSTART> Bestway Lazy-Spa plugin started
    23:36:07.597 <INFO> LoxBerry Version 2.2.1.2 ( is_raspberry.cfg )
    23:36:07.597 <INFO> Bestway Lazy-Spa Version 0.0.1
    23:36:07.597 <INFO> Loglevel: 7
    23:36:07.597 <INFO> /opt/loxberry/log/plugins/lazy_spa + /opt/loxberry/config/plugins/lazy_spa
    23:36:07.602 <INFO> Got mail from config.json
    23:36:07.602 <INFO> have everything, fine

    Dann landet aber nichts in meiner Log-Datei

    Ruf ich mein Skript so auf, bleibt es "hängen" und zwar scheinbar nach bei dem Log->new.

    Code:
    #!/usr/bin/perl
    
    require HTTP::Request;
    
    use LWP::UserAgent;
    
    use Time::HiRes;
    use LoxBerry::JSON;
    use LoxBerry::IO;
    use LoxBerry::Log;
    use LoxBerry::System;
    
    
    
    my $cfgfile = "$lbpconfigdir/config.json";
    
    my $log = LoxBerry::Log->new (
    name => 'Bestway Lazy-Spa',
    filename => "$lbplogdir/lazyspa.log",
    append => 1,
    stdout => 1
    );
    
    LOGSTART "Bestway Lazy-Spa plugin started";
    
    LOGINF "$lbplogdir + $lbpconfigdir";
    
    #hier mein eigentliches Script
    Für mich hat es den Anschein, dass die Variablen lbplogdir und configdir, erst richtig gesetzt werden wenn ich die einmal verwendet z.b. in dem LOGINF, wobei ich nicht den Unterschied sehe zwischen dem Aufruf beim LOGINF und im Konstruktor.

    Output beim letzten Aufruf:
    ================================================== ==============================
    <LOGSTART> 14.12.2021 23:37:25 TASK STARTED
    <LOGSTART> Bestway Lazy-Spa plugin started
    <INFO> LoxBerry Version 2.2.1.2 ( is_raspberry.cfg )
    <INFO> Bestway Lazy-Spa Version 0.0.1
    <INFO> Loglevel: -1


    Ich führ das Skript momentan direkt auf dem Loxberry aus (über ssh verbunden).

    Hätte gerne von anfang an ein funktionierenden Log

    Grüße

    Tim
    Angehängte Dateien
  • Prof.Mobilux
    Supermoderator
    • 25.08.2015
    • 4759

    #2
    LOGSTART muss definitiv nach dem Initialisieren des Logfiles kommen, also nach LoxBerry::Log->new. Wo liegt Dein Skript im Dateisystem? Das Skript muss im passenden Ordner des Plugins liegen, sonst funktionieren die Systemvariablen nicht richtig.

    Am Besten lädst Du den Code mal auf Git hoch, wo wir ihn komplett ansehen können. So kann man schlecht helfen. Es gibt auch eine WhatsApp Gruppe für Pluginentwickler. Dort kan man direkt Fragen stellen und viele andere Entwickler und auch wir vom LoxBerry Core Team lesen dort mit. Da bekommt man meist schneller Hilfe. Schreib mir einfach eine PN mit Deiner Handynummer wenn Du Interesse hast.
    🇺🇦 Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine


    LoxBerry - Beyond the Limits

    Kommentar

    • Christian Fenzl
      Lebende Foren Legende
      • 31.08.2015
      • 11238

      #3
      Imho liegt es am Pfad, wo es ausgeführt wird, wobei die Pfade an sich richtig sind.
      Ist das Plugin schon einmal installiert worden? Gibt es dazu einen Eintag in der Plugin-Verwaltung? Wenn nein, funktioniert die Erkennung des Plugins nicht (weil es das noch nicht gibt).

      Der package-Parameter der Log-Lib wird aufgrund des Pfades ermittelt, wo das Script läuft, ebenso wird anhand des Pfades der loglevel des Plugins aus der Plugindatenbank ausgelesen.
      Wenn du also nicht in einem dezidierten Plugin-Ordner bist, funktioniert das nicht, und diese Parameter müssen mitgegeben werden (so müssen wir das z.B. für Core-Widgets machen, weil das keine Plugins sind).

      Alle LOG-Events (LOGSTART,...) müssen auf jeden Fall nach dem Konstruktor kommen.

      Dass alles hängen bleibt, das kann ich mir ehrlich gesagt nicht erklären. Normalerweise funktioniert das Logging einfach nicht, oder du bekommst eine Exception.

      Komm in die WhatsApp Gruppe (PM an Michael), da geht es schneller.

      lg, Christian
      Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

      Kommentar

      • schoendort
        Extension Master
        • 06.05.2020
        • 131

        #4
        soo nach Feierabend kam ich dazu, dass ganze mal auf github zu pushen: https://github.com/schoendort/lazy_spa
        ich hab gestern noch etwas am Skript gebastelt.

        Also ich habe als Basis das SamplePlugin-v2 ausgecheckt, die Namen angepasst, das erste Dummy-Skript angelegt und das erstmal gezippt und auf dem Loxberry installliert. dann mit ssh auf den Loxberry und im Verzeichnis /opt/loxberry/bin/plugins/lazy_spa/ das Skript editiert und ausgeführt. postInstall.sh war zu dem Zeitpunkt noch "leer", habe jetzt mal den Start vom Skript mit aufgenommen, scheint aber noch nicht zu funktionieren.

        Ich bin halt irritiert, weil er wenn ich die Pfade ausgebe, die erstmal richtig aufgelöst hat, aber dann scheinbar irgendwo hängt, bzw. so wie es aktuell eingecheckt ist, funktioniert es erstmal (bis eben auf das Loggen in eine Datei).

        Danke euch schonmal für die Rückmeldung, PM mit Handynummer geht dann auch gleich raus.

        Gruß
        Tim

        Kommentar

        • Christian Fenzl
          Lebende Foren Legende
          • 31.08.2015
          • 11238

          #5
          Hallo Tim,

          ich konnte das Problem leider nicht reproduzieren.

          Nochmal zusammengefasst:

          Die Variante 1 kann nicht funktionieren, weil zuerst das Logging-Objekt erstellt werden muss.

          Die Variante 2 funktioniert bei mir ohne Probleme. Loglevel -1 kann eigentlich nur dann zurückgeliefert werden, wenn use_customlogs in der plugin.cfg beim Installieren auf false war.


          Sollte das Problem noch bestehen, melde dich bitte, dann mach ich den Issue https://github.com/mschlenstedt/Loxberry/issues/1297 wieder auf.

          lg, Christian
          Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

          Kommentar

          Lädt...