Contao-Camp 2024
Ergebnis 1 bis 2 von 2

Thema: Symfony Fingers Crossed Logging in permanent laufendem Worker

  1. #1
    Jayster
    Gast

    Standard Symfony Fingers Crossed Logging in permanent laufendem Worker

    Ich habe einen Konsolenskript, das permanent als Worker läuft und Nachrichten von einer Message Queue verarbeitet. Bei einem Fehler bleibt der Worker nicht stehen, sondern loggt den Fehler.

    Meine monolog.yaml sieht so aus:
    Code:
    monolog:
        handlers:
            main:
                type: fingers_crossed
                action_level: error
                handler: nested
                excluded_404s:
                    # regex: exclude all 404 errors from the logs
                    - ^/
            nested:
                type: stream
                path: "%kernel.logs_dir%/%kernel.environment%.log"
    Ich möchte also mittels "fingers_crossed" nur dann Nachrichten (von jedem Level) in die Datei schreiben, wenn eine Nachricht mit dem Level "error" aufgetreten ist.

    In einem ständig laufenden Prozess scheint fingers_crossed aber nicht mehr zurück gesetzt zu werden. Ich habe folgendes Verhalten:
    - Bis der erste Fehler aufritt, wird nichts in die Datei geschrieben (soweit richtig)
    - Wenn der erste Fehler auftritt, werden sämtliche Nachrichten aller Levels, die bis dahin aufgetreten sind in die Datei geschrieben (falsch, es sollten nur die Nachrichten, die zu dem Fehler gehören geschrieben werden, nicht die, die bei den vorherigen korrekt verarbeiteten Messages auftraten)
    - Ab dem ersten Fehler wird jede Nachricht mit jedem Level sofort in die Datei geschrieben (falsch, es sollten erst ab dem nächsten Fehler wieder Nachrichten in die Datei geschrieben werden).

    In den Optionen von fingers_crossed finde ich nichts, was mir helfen könnte: https://github.com/symfony/monolog-b...ration.php#L89

    Ich glaube, mein grundlegendes Problem ist, dass ich nicht Request-Response habe, sondern einen ständig laufenden Prozess. Dafür scheint Fingers Crossed nicht geeignet zu sein.

    Das ist nicht ganz so schlimm, ich kann auch auf Fingers Crossed verzichten und nur Nachrichten mit dem Level "error" loggen. Ich dachte aber, ich frag mal, ob jemand vielleicht eine Idee hat. Ich fand Fingers Crossed für den Produktiv Betrieb eigentlich eine schöne Sache.

  2. #2
    Jayster
    Gast

    Standard

    Etwas ist mir noch eingefallen.

    Ich könnte, anstatt den Worker die Messages direkt verarbeiten zu lassen, bei jeder Message einen Request generieren, der dann von einem Controller beantwortet wird. Dann hätte ich für jede Message ein Request-Response Modell in dem ich mit Fingers Crossed arbeiten könnte.

    Ich habe das noch nicht getestet, da ich Fingers Crossed momentan in meiner Applikation nur als nice-to-have einstufe, nicht als unbedingt nötig.

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •