PsrLogMessageProcessor.php 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  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. /**
  12. * Processes a record's message according to PSR-3 rules
  13. *
  14. * It replaces {foo} with the value from $context['foo']
  15. *
  16. * @author Jordi Boggiano <j.boggiano@seld.be>
  17. */
  18. class PsrLogMessageProcessor
  19. {
  20. /**
  21. * @param array $record
  22. * @return array
  23. */
  24. public function __invoke(array $record)
  25. {
  26. if (false === strpos($record['message'], '{')) {
  27. return $record;
  28. }
  29. $replacements = array();
  30. foreach ($record['context'] as $key => $val) {
  31. if (is_null($val) || is_scalar($val) || (is_object($val) && method_exists($val, "__toString"))) {
  32. $replacements['{'.$key.'}'] = $val;
  33. } elseif (is_object($val)) {
  34. $replacements['{'.$key.'}'] = '[object '.get_class($val).']';
  35. } else {
  36. $replacements['{'.$key.'}'] = '['.gettype($val).']';
  37. }
  38. }
  39. $record['message'] = strtr($record['message'], $replacements);
  40. return $record;
  41. }
  42. }