Shopware 6 - Protokollrotation / Logrotate

Shopware 6 protokolliert alle auftretenden PHP Exceptions im Verzeichnis var/log nach dem Schema: prod-YYYY-MM-DD.log. Hierzu wird die Monolog Library verwendet.

Shopware bietet im Standard leider keine Option für die Protokollrotation an, sodass auf zwei alternative Optionen ausgewichen werden muss:


  1. Monolog rotating_file Handler
  2. Linux logrotate



Monolog rotating_file Handler

Um den Monolog rotating_file Handler in Shopware 6 zu verwenden, muss eine shopware.yaml Config Datei in dem folgenden Shopware Verzeichnis angelegt werden:


/config/packages/shopware.yaml


Tipp: Bei unseren Managed Shopware Servern befindet sich das korrekte Document-Root Verzeichnis unter dem absoluten Pfad: /var/www/vhosts/meine-shop-domain.de/httpdocs/


# /var/www/vhosts/meine-shop-domain.de/httpdocs/config/packages/shopware.yaml

shopware:
    logger:
        file_rotation_count: 14


Über die Variable file_rotation_count kann die Anzahl der maximalen gleichzeitigen Protokolldateien konfiguriert werden. Ältere Dateien werden automatisch durch Monolog entfernt.


Nachdem die Config-Datei erstellt wurde, muss der Shopware Cache geleert werden, damit die neue Konfigurationsdatei aktiviert wird:

bin/console cache:clear


Bei unseren Managed Shopware Servern stehen verschiedene PHP-Binaries für die Ausführung der CLI Konsole zur Verfügung. Um den Cache mit der PHP 8.1 CLI zu leeren muss folgendes Command ausgeführt werden:

/opt/plesk/php/8.1/bin/php /var/www/vhosts/meine-shop-domain.de/httpdocs/bin/console cache:clear



Linux Logrotate

Navigieren Sie zum Verzeichnis /etc/logrotate.d/ und erstellen Sie eine Datei über den Befehl touch shopware eine neue Datei.


touch /etc/logrotate.d/shopware


/var/www/vhosts/shopware.creoline-demo.com/log/*.log {
    daily
    size 50M
    rotate 14
    notifempty
    missingok
    nocompress
}


Über die Anweisung daily, rotate 14 wird der logrotate Daemon dazu angewiesen, die Log-Dateien von Shopware täglich für 14 Tage zu rotieren.