Plugin Logger - nur noch Logging bei error Level

Hallo zusammen,

mir ist aufgefallen, dass seit paar Tagen nur noch Einträge in die Plugin Logfiles geschrieben werden, wenn es Loglevel error ist.

Gab es eine Änderung in der Hinsicht oder wo kann man dies einstellen?

Getestet habe ich dies wie folgt:

Shopware()->Pluginlogger()->error('test 1');
Shopware()->Pluginlogger()->info('test 2');
Shopware()->Pluginlogger()->error('test 3');

Im Pluginlogfile erscheint nur test 1 + test 3.

Gruß,
Flo

Dann bist du nicht im “Development” modus. Seit 5.4.6 kriegst du im Production Modus nur Errors geloggt.

Stell es einfach in der config.php runter oder setz eine SHOPWARE_ENV shopware/Default.php at 5.4 · shopware/shopware · GitHub

1 Like

Naja, wenn ich explizit möchte, dass ein Plugin einen “info”-Logeintrag schreiben soll, dann sollte man nicht unbedingt dafür auf “Development” modus wechseln müssen…

Das Logging ist nunmal so. Zu den schon genannten Möglichkeiten, könntest du auch ein eigenes Logging bauen.

Aber ich würde das anpassen der config.php empfehlen.

Noch für die Faulen (config.php):

 [
        'level' => 200
    ]
];

/* Konstanten aus \Monolog\Logger
DEBUG = 100
INFO = 200
NOTICE = 250
WARNING = 300
ERROR = 400
CRITICAL = 500
ALERT = 550
EMERGENCY = 600
*/

 

1 Like

@supermonster schrieb:

Noch für die Faulen (config.php):

[
‘level’ => 200
]
];

/* Konstanten aus \Monolog\Logger
DEBUG = 100
INFO = 200
NOTICE = 250
WARNING = 300
ERROR = 400
CRITICAL = 500
ALERT = 550
EMERGENCY = 600
*/

 

1000 Dank!

Man kann die Variablen zum Verständnis auch nutzen und muss nicht unbedingt die int Werte dafür eintragen.

Dafür sollte man in der config.php oben einfach

use Shopware\Components\Logger;

nutzen. Im return array Teil dann das hier rein packen

'logger' => [
    'level' => $this->Environment() !== 'production' ? Logger::DEBUG : Logger::ERROR,
],

und anpassen. Das Beispiel hier oben ist der Standard-Eintrag aus der Default.php. Wird also im Standard so behandelt. Der setzt voraus das man sich im dev bzw NICHT im production mode befindet. Hier kann man DEBUG mit INFO austauschen wenn man das Level entsprechend verändern mag. 
Wer allgemein immer ein anderes Level haben möchte, kann (wie oben mit integer beschrieben) den Eintrag auch entsprechend anpassen.

'logger' => [
    'level' => Logger::DEBUG,
],

Wobei hier zu erwähnen ist, die Loggineinträge werden nach ihrem Level nach oben durchgereicht. Wenn ich also Logger::NOTICE verwende, dann bekomm ich im Log nur selbiges und darüber liegende Logs ausgegeben, sprich Logger::NOTICE, Logger::WARNING,   Logger::ERROR, Logger::CRITICAL, … usw

Abschließend ist noch zu sagen, wenn man in der .htaccess die Environment ändert, zb zu dev , dann sind dadurch die Consolen-Commands nicht betroffen! Wenn ich also Consolen-Commands auch in dev ausführen will kann ich das entweder mit einem Eintrag im Apache machen oder wenn ich den Command ausführe ein

Syntax: --env=[environment]
Beispiel: 

--env=dev

bin/console sw:cache:clear --env=dev

anhängen. Dann wird dieser in der entsprechend angegebenen Environment ausgefüht.

 

Gruß

Dwza