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
**/
public static function exception($exception, $prefix=null, $fatal=true, $logger=null) {
$message =
($prefix?"$prefix :\n":"An exception occured :\n").
implode(
"\n",
array_map(
function($line) { return " $line"; },
array_slice(
array_reverse(
explode(
"\n",
$exception->getTraceAsString()
),
1
),
1
)
)
)."\n => ". $exception->getMessage();
$message = sprintf("%s:\n", $prefix ? $prefix : "An exception occured");
// Add backtrace
// Note: reverse the backtrace lines to get the entrypoint as first and remove useless first
// "{main}" line.
$lines = array_slice(
array_reverse(
explode(
"\n",
$exception->getTraceAsString()
),
1
),
1
);
foreach($lines as $idx => $line)
$message .= sprintf(
" #%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);
}