In Shopware 6 gibt es einen Plugin-Logger, mit dem Ihr Plugin Logs in eine eigene Logdatei ausgeben kann, die von den Standard-Logs von Shopware getrennt ist. Dies kann für die Fehlersuche, die Überprüfung von Plugin-spezifischen Aktivitäten oder die Organisation von Logs nützlich sein.
Hier erfahren Sie, wie Sie einen benutzerdefinierten Logger verwenden, der in eine spezielle Datei protokolliert. Jede Logdatei hängt die Umgebung und das Datum an, die beide in der Datei .env festgelegt sind.
Schritt 1: Registrieren Sie die integrierte LoggerFactory-Klasse.
Fügen Sie das neue Element in Ihres benutzerdefinierten Plugins hinzu, das sich in
Add the new <service> element in <services> of your custom plugin that is located in ExamplePlugin/src/Resources/config/services.xml
<service id="company.plugin.logger" class="Monolog\Logger">
<argument type="string">Company_PluginName</argument>
<argument type="collection">
<argument type="service" id="company.plugin.rotatingHandler"/>
</argument>
</service>
<service id="company.plugin.rotatingHandler" class="Monolog\Handler\RotatingFileHandler">
<argument type="string">%kernel.logs_dir%/company-name-%kernel.environment%.log</argument>
</service>
Lassen Sie uns über die Klasse, die ID und das Argument sprechen, die im Service-Element definiert sind.
- Class: Die Klasse ist die eigentliche PHP-Klasse, die der Dependency-Injection-Container von Symfony für diesen Dienst instanziiert.
- ID: „company.plugin.logger” ist eine variable Kennung. Diese Kennung wird für die Dependency Injection in Ihrem Dienst verwendet.
- Argument: Es enthält den Dateinamen als Zeichenfolge, der als Präfix für die Protokollierung verwendet wird.
Schritt 2: Fügen Sie den Logger-Dienst in Ihre Klasse ein.
Um dies in Ihrer benutzerdefinierten Klasse(class), z. B. CartValidator, zu verwenden und Debugging-Daten zu protokollieren, müssen Sie den Logger-Dienst anhand seiner ID einbinden. Ich habe hier die Logger-Dienst-ID company.plugin.logger verwendet, die ich bereits deklariert habe.
<service id="StockBlocker\Core\Checkout\Cart\Custom\CustomCartValidator">
<tag name="shopware.cart.validator"/>
<argument type="service" id="company.plugin.logger"/>
</service>
Schritt 3: Verwendung des Loggers in einer benutzerdefinierten Klasse.
Sie haben den Logger-Dienst als erstes Argument an den Konstruktor Ihrer Klasse übergeben. Sie müssen ihn in Ihrem Konstruktor als Argument vom Typ LoggerInterface definieren.
<?php
declare(strict_types=1);
namespace StockBlocker\Core\Checkout\Cart\Custom;
use Shopware\Core\Checkout\Cart\CartValidatorInterface;
use Psr\Log\LoggerInterface;
class CustomCartValidator implements CartValidatorInterface
{
private LoggerInterface $logger;
public function __construct(LoggerInterface $logger)
{
$this->logger = $logger;
}
public function validate(): void
{
$this->logger->info('Custom Cart Validator');
}
}

Die Protokolldatei wird im Verzeichnis „var/log“ gespeichert. Sie können die Protokolle in dieser Datei einsehen.
Bitte kontaktieren Sie uns unter manish@bay20.com oder rufen Sie uns unter +91-8800519180 / +91-9582784309 an, wenn Sie Unterstützung im Zusammenhang mit Shopware benötigen. Sie können auch die Shopware-Entwicklungsseite besuchen, um die von uns angebotenen Dienstleistungen zu überprüfen.






