Fix enotice when Log service is swapped out
authoreileen <emcnaughton@wikimedia.org>
Mon, 26 Apr 2021 05:23:13 +0000 (17:23 +1200)
committerColeman Watts <coleman@civicrm.org>
Wed, 5 May 2021 00:25:18 +0000 (20:25 -0400)
This function is calling a property on the psr_log service that may not exist. If the
service is swapped out there is no reason the replacement should have this property.

CRM/Core/Error/Log.php
Civi/API/LogObserver.php

index de619aaee050d521b8abc614ef026aab667fb110..9904045ad1a169f5c3ed3981e44a41ba13f52c73 100644 (file)
@@ -26,7 +26,14 @@ class CRM_Core_Error_Log extends \Psr\Log\AbstractLogger {
    * CRM_Core_Error_Log constructor.
    */
   public function __construct() {
-    $this->map = [
+    $this->map = self::getMap();
+  }
+
+  /**
+   * @return array
+   */
+  public static function getMap():array {
+    return [
       \Psr\Log\LogLevel::DEBUG => PEAR_LOG_DEBUG,
       \Psr\Log\LogLevel::INFO => PEAR_LOG_INFO,
       \Psr\Log\LogLevel::NOTICE => PEAR_LOG_NOTICE,
index b92eaa67d4048faded898571d7345db537688fce..c7cf5a32361d066d6b75889782c126536cb8c0ae 100644 (file)
@@ -23,7 +23,7 @@ class LogObserver extends \Log_observer {
    * @param array $event
    */
   public function notify($event) {
-    $levels = \Civi::log()->map;
+    $levels = \CRM_Core_Error_Log::getMap();
     $event['level'] = array_search($event['priority'], $levels);
     // Extract [civi.tag] from message string
     // 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