Symfony 2 Protokollierung von exceptions in der console
Warum Fehler von der Konsole Aufgaben sind nicht angemeldet.
Zum Beispiel Ausnahme auf php-Warnung:
[ErrorException]
Notice: Undefined offset: 1 in /var/www/project/vendor/doctrine/lib/Doctrine/ORM/Query.php line 298
Ich sehen, was gedruckt in die Standardausgabe, aber nichts protokolliert protokolliert. (Ich verwende die Konsole Befehle cron).
Im web diese Ausnahmen protokolliert, mit backtrace, die in dieser situation mehr Informations-als nur diese Ausnahme.
Als eine Lösung: ich lege alle Prozess-Funktion im try..catch-block und protokollieren der Ablaufverfolgung manuell.
Ist weiss jemand wie man das aktivieren oder konfigurieren Sie die Protokollierung in der Konsole Aufgaben.
Ich denke, es muss irgendwo sein.
InformationsquelleAutor Sawered | 2012-02-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als folgte ich dem code, es gibt tatsächlich keine solche option zum aktivieren der Protokollierung für Befehle. In
app/console
ist dieser code:Ruft es
Symfony\Component\Console\Application::run()
in denen es try/catch-block. Auf Ausnahme-MethoderenderException()
genannt wird, aber keine Protokollierung geschieht überall.Beachten Sie auch, dass
app/console
immer standardmäßig beendet sich mit Fehler code auf Ausnahme.Können Sie Ihre eigenen
Application
- Klasse, die sichSymfony\Bundle\FrameworkBundle\Console\Application
und ändernapp/console
es zu benutzen. Als Sie außer Kraft setzen könnenrun()
- Methode, und fügen Fehler-logging.Oder Sie ändern einfach
app/console
und behandeln von Fehlern wie diesem:InformationsquelleAutor Martin
Wenn das ist die Materie einfach zu verstehen, was falsch gelaufen ist, wo können Sie Ihre app mit der verbose-flag
-v
oder--verbose
, die automatisch drucken Sie die Ausnahme-trace auf dem Bildschirm.Stimmt, sorry, verpasste den cron-Teil. Konnte nicht herausfinden, wie man die backtrace ohne komplizierende es alles zu viel, beschlossen, zu teilen die Ergebnisse.
danke jedenfalls, deine Antwort hat mir sehr geholfen!
InformationsquelleAutor Ian Bytchek
TL;DR : nutzen Sie einfach dieses bundle
Aus der Kochbuch :
Erstellen Sie eine service-tagged als Ereignis-listener für die
console.exception
Veranstaltung :Können Sie nun tun, was Sie wollen mit Konsole Ausnahmen :
InformationsquelleAutor greg0ire
Ein anderer Weg ist, um Ihre eigenen benutzerdefinierten
OutputInterface
- Klasse und überschreiben Sie diewriteln
Methode zum protokollieren der Fehler dort. Verwenden Sie die neue Klasse beim ausführen derrun()
Methode.Diese Weise können Sie sich auf die Open/Close-Prinzip von Symfony-ohne änderung der Basis-Klassen und-noch Ihre Ziele zu erreichen.
InformationsquelleAutor slimdrive