Plugin-Logger für SW 6

Hallo Zusammen,

Einfache Frage: Wie kann ich in einem SW 6 Plugin eine Message in das Logfile des Shops schreiben?
In SW 5 gab es dazu den Plugin-Logger, den man sich über den DI-Container abholen konnte.

Wie funktioniert dies nun in SW 6?
In der Doku habe ich bisher nur einen “Logging” Abschnitt zum Migration Assistent gefunden.
 

Viele Grüße
Dennis

1 „Gefällt mir“

Hi Dennis,

ich nutz das 

 Psr\Log\LoggerInterface

(wie auch schon in SW5), den ‚logger‘ Service kannst Du über die services.xml injecten.

Viel Erfolg,

Geert

Hallo Dennis,

hier siehst du an einem Beispiel, wie man sich ein plugin-spezifischen Logger erstellt: SwagPayPal/util.xml at 1.10.0 · shopware/SwagPayPal · GitHub Der Logger ist dann unter der ID „Swag\PayPal\Util\Logger“ im Container verfügbar und kann z.B. so injected werden: SwagPayPal/client.xml at 1.10.0 · shopware/SwagPayPal · GitHub

Unter /var/log im Shopware Verzeichnis werden dann Dateien nach folgenden Schema angelegt: swag_paypal_dev-2020-01-10.log

Viele Grüße aus Schöppingen

Michael Telgmann

3 „Gefällt mir“

Perfekte Lösung, da die Logs so auch direkt in eine eigene Datei geschrieben werden!

 

Links sind tot. Hat jemand aktuelle? In den Docs finde ich zu eigenen Logs nichts.

Edit sagt: Shopware 6 Custom Plugin Logger - Sindhi Tutorials

Hallo @gaxweb

danke für den Hinweis, ich hab die Links mal bearbeitet.

In der aktuellen Version sieht das wie folgt aus. SwagPayPal/util.xml at 6.0.2 · shopware/SwagPayPal · GitHub

Genutzt dann wie folgt: SwagPayPal/client.xml at 6.0.2 · shopware/SwagPayPal · GitHub

Viele Grüße aus Schöppingen
Michael Telgmann

Und wie ist das in SW 6.6? Ich werd aus den neuen Einträgen nicht wirklich schlau:

Genügt der Teil mit „introspection“ oder muss das darunter auch mit?

Wenn ich mir How to Log Messages to different Files (Symfony Docs) anschaue, dann sollte es auch via PHP Attribut klappen, oder? Muss dann gar nichts in die services.xml? Wenn nicht, welcher Parameter im Konstruktor enthält dann den Logger?

Den Service benutze ich auch. Aber wo sehe ich die ausgeführten Logs unter SW 6.6? Muss das irgendwo noch extra definiert werden?

Ich habe im Slack mal diesen Tipp bekommen. In der offiziellen Shopware Doku ist das sehr umständlich gelöst, man kann aber einen eigenen Service für „LoggerInterface“ registrieren.

<?xml version="1.0" encoding="UTF-8" ?>

<container xmlns="http://symfony.com/schema/dic/services"
           xmlns:monolog="http://symfony.com/schema/dic/monolog">
    <monolog:config>
        <monolog:channel>moorl_staging_channel</monolog:channel>
        <monolog:handler name="moorlStagingLogHandler"
                         type="rotating_file"
                         level="debug"
                         path="%kernel.logs_dir%/moorl_staging_%kernel.environment%.log">
            <monolog:channels>
                <monolog:channel>moorl_staging_channel</monolog:channel>
            </monolog:channels>
        </monolog:handler>
    </monolog:config>
</container>

Das Level ist hier statisch hinterlegt und steht auf „debug“ es wird also alles geloggt, unabhängig ob „prod“ oder „dev“.

In diesem Beispiel ist der Service, der als LoggerInterface dient:

<argument type="service" id="monolog.logger.moorl_staging_channel"/>
1 „Gefällt mir“