7 * API Error Log Observer
9 * @see \CRM_Core_Error_Log
10 * @see \Civi\API\Subscriber\DebugSubscriber
14 class LogObserver
extends \Log_observer
{
19 private static $messages = [];
22 * @see \Log::_announce
25 public function notify($event) {
26 $levels = \Civi
::log()->map
;
27 $event['level'] = array_search($event['priority'], $levels);
28 // Extract [civi.tag] from message string
29 // As noted in \CRM_Core_Error_Log::log() the $context array gets prematurely converted to string with print_r() so we have to un-flatten it here
30 if (preg_match('/^(.*)\s*Array\s*\(\s*\[civi\.(\w+)] => (\w+)\s*\)/', $event['message'], $message)) {
31 $event['message'] = $message[1];
32 $event[$message[2]] = $message[3];
34 self
::$messages[] = $event;
40 public function getMessages() {
41 return self
::$messages;