Laravel PHPUnit-Tests in andere Log-Datei loggen lassen

12.01.2018

Im Moment habe ich mehreren Projekte, die ich mit dem PHP-Framework Laravel umgesetze. Laravel bietet mir unter anderem hervorragende Grundlagen um APIs, mit einer ORM gemappten Datenbank und der dazugehörigen Geschäftslogik umzusetzen. PHPUnit-Tests sind bereits vorkonfiguriert, so dass man sofort loslegen kann seine APIs testgetrieben zu entwickeln.

Standardmäßig werden alle Logs die durch die Anwendung erzeugt werden in „laravel/storage/log/laravel.log“ gespeichert.

\Log::info('IMPORT - START');

Nutze ich oben stehenden Code in einem Controller oder einem Laravel-Command wird immer in die Standard-Log-Datei geloggt, auch wenn ein PHPUnit-Test läuft.

Mit folgender Ergänzung in der Datei „laravel/test/TestCase.php“ werden bei Tests die Log-Ausgaben aller Tests nach „laravel/storage/log/test.log“ gespeichert.

//add this to createApplication(), directly before the return
\Log::getMonolog()->popHandler();//remove default Log-Handler
\Log::useFiles(storage_path().'/logs/test.log');//set new Log-Handler

Diese Seite benutzt Cookies, um seinen Besuchern das beste Webseiten-Erlebnis zu ermöglichen. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Weiterführende Informationen erhalten Sie in unserer Datenschutzerklärung.

Ich habe verstanden Zur Datenschutzerklärung