LSlog: fix computing exception context

This commit is contained in:
Benjamin Renard 2024-12-13 12:03:10 +01:00
parent ef1b4a74e2
commit 22a5be4ddd
Signed by: bn8
GPG key ID: 3E2E1CE1907115BC

View file

@ -401,24 +401,35 @@ class LSlog {
* @return void * @return void
**/ **/
public static function exception($exception, $prefix=null, $fatal=true, $logger=null) { public static function exception($exception, $prefix=null, $fatal=true, $logger=null) {
$message = $message = sprintf("%s:\n", $prefix ? $prefix : "An exception occured");
($prefix?"$prefix :\n":"An exception occured :\n").
implode( // Add backtrace
"\n", // Note: reverse the backtrace lines to get the entrypoint as first and remove useless first
array_map( // "{main}" line.
function($line) { return " $line"; }, $lines = array_slice(
array_slice( array_reverse(
array_reverse( explode(
explode( "\n",
"\n", $exception->getTraceAsString()
$exception->getTraceAsString() ),
), 1
1 ),
), 1
1 );
) foreach($lines as $idx => $line)
) $message .= sprintf(
)."\n => ". $exception->getMessage(); " #%d %s\n",
$idx + 1,
substr($line, 2)
);
// Add exception details
$message .= sprintf(
" #0 %s(%s) :\n => %s",
$exception->getFile(),
$exception->getLine(),
$exception->getMessage()
);
self :: logging(($fatal?'FATAL':'ERROR'), $message, $logger, true); self :: logging(($fatal?'FATAL':'ERROR'), $message, $logger, true);
} }