vendor/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php line 23

Open in your IDE?
  1. <?php
  2. /*
  3.  * This file is part of the Monolog package.
  4.  *
  5.  * (c) Jordi Boggiano <j.boggiano@seld.be>
  6.  *
  7.  * For the full copyright and license information, please view the LICENSE
  8.  * file that was distributed with this source code.
  9.  */
  10. namespace Monolog\Processor;
  11. use Monolog\Utils;
  12. /**
  13.  * Processes a record's message according to PSR-3 rules
  14.  *
  15.  * It replaces {foo} with the value from $context['foo']
  16.  *
  17.  * @author Jordi Boggiano <j.boggiano@seld.be>
  18.  */
  19. class PsrLogMessageProcessor implements ProcessorInterface
  20. {
  21.     /**
  22.      * @param  array $record
  23.      * @return array
  24.      */
  25.     public function __invoke(array $record)
  26.     {
  27.         if (false === strpos($record['message'], '{')) {
  28.             return $record;
  29.         }
  30.         $replacements = array();
  31.         foreach ($record['context'] as $key => $val) {
  32.             if (is_null($val) || is_scalar($val) || (is_object($val) && method_exists($val"__toString"))) {
  33.                 $replacements['{'.$key.'}'] = $val;
  34.             } elseif (is_object($val)) {
  35.                 $replacements['{'.$key.'}'] = '[object '.Utils::getClass($val).']';
  36.             } else {
  37.                 $replacements['{'.$key.'}'] = '['.gettype($val).']';
  38.             }
  39.         }
  40.         $record['message'] = strtr($record['message'], $replacements);
  41.         return $record;
  42.     }
  43. }