fix ConsoleFormatter - call to a member function format() on string

This commit is contained in:
Ondrej Exner 2019-04-30 09:27:22 +02:00
parent e197c9ab1b
commit 648832823f
No known key found for this signature in database
GPG Key ID: C48BF5ECF707FD17
2 changed files with 69 additions and 1 deletions

View File

@ -133,7 +133,9 @@ class ConsoleFormatter implements FormatterInterface
}
$formatted = strtr($this->options['format'], [
'%datetime%' => $record['datetime']->format($this->options['date_format']),
'%datetime%' => $record['datetime'] instanceof \DateTimeInterface
? $record['datetime']->format($this->options['date_format'])
: $record['datetime'],
'%start_tag%' => sprintf('<%s>', $levelColor),
'%level_name%' => sprintf('%-9s', $record['level_name']),
'%end_tag%' => '</>',

View File

@ -0,0 +1,66 @@
<?php
/*
* This file is part of the Symfony package.
*
* (c) Fabien Potencier <fabien@symfony.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace Symfony\Bridge\Monolog\Tests\Formatter;
use Monolog\Logger;
use PHPUnit\Framework\TestCase;
use Symfony\Bridge\Monolog\Formatter\ConsoleFormatter;
class ConsoleFormatterTest extends TestCase
{
/**
* @dataProvider providerFormatTests
*/
public function testFormat(array $record, $expectedMessage)
{
$formatter = new ConsoleFormatter();
self::assertSame($expectedMessage, $formatter->format($record));
}
/**
* @return array
*/
public function providerFormatTests()
{
$currentDateTime = new \DateTime();
return [
'record with DateTime object in datetime field' => [
'record' => [
'message' => 'test',
'context' => [],
'level' => Logger::WARNING,
'level_name' => Logger::getLevelName(Logger::WARNING),
'channel' => 'test',
'datetime' => $currentDateTime,
'extra' => [],
],
'expectedMessage' => sprintf(
"%s <fg=cyan>WARNING </> <comment>[test]</> test\n",
$currentDateTime->format(ConsoleFormatter::SIMPLE_DATE)
),
],
'record with string in datetime field' => [
'record' => [
'message' => 'test',
'context' => [],
'level' => Logger::WARNING,
'level_name' => Logger::getLevelName(Logger::WARNING),
'channel' => 'test',
'datetime' => '2019-01-01T00:42:00+00:00',
'extra' => [],
],
'expectedMessage' => "2019-01-01T00:42:00+00:00 <fg=cyan>WARNING </> <comment>[test]</> test\n",
],
];
}
}