mirror of
https://github.com/Seldaek/monolog.git
synced 2025-08-02 19:27:37 +02:00
Merge pull request #1169 from lstrojny/dev/better-psr3-formatting
Better PSR-3 message formatting
This commit is contained in:
@@ -20,7 +20,7 @@ namespace Monolog\Processor;
|
|||||||
*/
|
*/
|
||||||
class PsrLogMessageProcessor
|
class PsrLogMessageProcessor
|
||||||
{
|
{
|
||||||
const SIMPLE_DATE = "Y-m-d\TH:i:sP";
|
const SIMPLE_DATE = "Y-m-d\TH:i:s.uP";
|
||||||
|
|
||||||
private $dateFormat;
|
private $dateFormat;
|
||||||
|
|
||||||
@@ -33,7 +33,7 @@ class PsrLogMessageProcessor
|
|||||||
*/
|
*/
|
||||||
public function __construct(string $dateFormat = null, bool $removeUsedContextFields = false)
|
public function __construct(string $dateFormat = null, bool $removeUsedContextFields = false)
|
||||||
{
|
{
|
||||||
$this->dateFormat = null === $dateFormat ? static::SIMPLE_DATE : $dateFormat;
|
$this->dateFormat = $dateFormat;
|
||||||
$this->removeUsedContextFields = $removeUsedContextFields;
|
$this->removeUsedContextFields = $removeUsedContextFields;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -57,9 +57,17 @@ class PsrLogMessageProcessor
|
|||||||
if (is_null($val) || is_scalar($val) || (is_object($val) && method_exists($val, "__toString"))) {
|
if (is_null($val) || is_scalar($val) || (is_object($val) && method_exists($val, "__toString"))) {
|
||||||
$replacements[$placeholder] = $val;
|
$replacements[$placeholder] = $val;
|
||||||
} elseif ($val instanceof \DateTimeInterface) {
|
} elseif ($val instanceof \DateTimeInterface) {
|
||||||
$replacements[$placeholder] = $val->format($this->dateFormat);
|
if (!$this->dateFormat && $val instanceof \Monolog\DateTimeImmutable) {
|
||||||
|
// handle monolog dates using __toString if no specific dateFormat was asked for
|
||||||
|
// so that it follows the useMicroseconds flag
|
||||||
|
$replacements[$placeholder] = (string) $val;
|
||||||
|
} else {
|
||||||
|
$replacements[$placeholder] = $val->format($this->dateFormat ?: static::SIMPLE_DATE);
|
||||||
|
}
|
||||||
} elseif (is_object($val)) {
|
} elseif (is_object($val)) {
|
||||||
$replacements[$placeholder] = '[object '.get_class($val).']';
|
$replacements[$placeholder] = '[object '.get_class($val).']';
|
||||||
|
} elseif (is_array($val)) {
|
||||||
|
$replacements[$placeholder] = 'array'.@json_encode($val);
|
||||||
} else {
|
} else {
|
||||||
$replacements[$placeholder] = '['.gettype($val).']';
|
$replacements[$placeholder] = '['.gettype($val).']';
|
||||||
}
|
}
|
||||||
|
@@ -68,7 +68,11 @@ class PsrLogMessageProcessorTest extends \PHPUnit\Framework\TestCase
|
|||||||
[false, ''],
|
[false, ''],
|
||||||
[$date, $date->format(PsrLogMessageProcessor::SIMPLE_DATE)],
|
[$date, $date->format(PsrLogMessageProcessor::SIMPLE_DATE)],
|
||||||
[new \stdClass, '[object stdClass]'],
|
[new \stdClass, '[object stdClass]'],
|
||||||
[[], '[array]'],
|
[[], 'array[]'],
|
||||||
|
[[], 'array[]'],
|
||||||
|
[[1, 2, 3], 'array[1,2,3]'],
|
||||||
|
[['foo' => 'bar'], 'array{"foo":"bar"}'],
|
||||||
|
[stream_context_create(), '[resource]'],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user