Elgg  Version 5.1
ElggLogFormatter.php
Go to the documentation of this file.
1 <?php
2 
3 namespace Elgg\Logger;
4 
7 
11 class ElggLogFormatter extends LineFormatter {
12 
16  public function format(array $record): string {
17  $context = elgg_extract('context', $record, []);
18  $exception = elgg_extract('exception', $context);
19  if ($exception instanceof \Throwable) {
20  $dt = new \DateTime();
21  $record['datetime'] = $dt;
22 
23  $eol = PHP_EOL;
24  $message = "Exception at time {$dt->getTimestamp()}:{$eol}{$exception->getMessage()}{$eol}";
25  $record['message'] = preg_replace('~\R~u', $eol, $message);
26 
27  if ($exception instanceof DatabaseException) {
28  $record['context']['sql'] = $exception->getQuery();
29  $record['context']['params'] = $exception->getParameters();
30  }
31 
32  unset($record['context']['exception']);
33  }
34 
35  return parent::format($record);
36  }
37 }
$context
Definition: add.php:8
Custom log formatter.
elgg_extract($key, $array, $default=null, bool $strict=true)
Checks for $array[$key] and returns its value if it exists, else returns $default.
Definition: elgglib.php:254
$dt
Definition: time.php:70
A generic parent class for database exceptions.
$exception
Definition: error.php:15