Ich habe log4php eingerichtet, um mit LoggerAppenderRollingFile Appender und die LoggerLayoutTTCC Layout. Wenn ich eine Ausnahme protokolliere, zeigt es jedoch nicht die Ausnahmedetails wie den Stack-Trace an, wie ich es in log4net gewohnt bin.
Ich habe einen kurzen Blick durch den Code geworfen und er sieht aus wie LoggerAppenderMongoDB unterstützt die Anzeige von Ausnahmen mit der Methode formatThrowable
, aber ich weiß nicht Ich sehe nichts Ähnliches in den anderen Appendern.
Ich habe das Gefühl, dass mir etwas offensichtlich fehlt. Gibt es etwas, das ich konfigurieren muss, um diese Details in der Protokolldatei zu drucken? Muss ich eine benutzerdefinierte LoggerAppender-Klasse erstellen? Oder können diese mit einem anderen Layout oder einem benutzerdefinierten Renderer erstellt werden?
Jetzt, da LoggerLayoutTTCC
veraltet ist, können Sie LoggerLayoutPattern mit einem besseren Tool verwenden Formatzeichenfolge, um Ausnahmen einzufügen.
Siehe den Abschnitt Protokollierungsausnahmen der Dokumentation: Ссылка
Sie sollten die PHP-Funktion set_exception_handler verwenden und log4php mit dieser Funktion umbrechen. schau es Dir an: Ссылка
%Vor%$ log- & gt; debug ($ ausnahme- & gt; getMessage ()); }
set_exception_handler ('exception_handler');
Ich bin zu der gleichen Schlussfolgerung gekommen: Es sieht so aus, als ob log4php nur etwas mit dem Parameter $throwable
in LoggerAppenderMongoDB.php
appender tut.
Die Basisklasse LoggerAppenderFile
basiert auf dem Layout LoggerLayoutTTCC
, um die Nachricht zu formatieren (wie erwartet). Diese Klasse hat eine Methode ignoresThrowable()
, die true zurückgibt. Obwohl diese Methode scheinbar nicht aufgerufen wird, vermittelt sie leicht, dass die Autoren anscheinend nicht beabsichtigen, den Fehler zu bemerken.
Ich habe meine eigene Layoutklasse hinzugefügt, die LoggerLayoutTTCC erweitert und format ()
überschreibt %Vor%