1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
|
<?php
/**
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license https://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
namespace Piwik\Plugins\Monolog\tests\Unit\Formatter;
use DateTime;
use Piwik\Plugins\Monolog\Formatter\LineMessageFormatter;
/**
* @group Log
* @covers \Piwik\Plugins\Monolog\Formatter\LineMessageFormatter
*/
class LineMessageFormatterTest extends \PHPUnit\Framework\TestCase
{
public function testItShouldFormatWithPlaceholders()
{
$formatter = new LineMessageFormatter('%level% %tag% %datetime% %message%');
$record = array(
'message' => 'Hello world',
'datetime' => DateTime::createFromFormat('U', 0),
'level_name' => 'ERROR',
'extra' => array(
'class' => 'Foo',
),
);
$formatted = "ERROR Foo 1970-01-01 00:00:00 GMT+0000 Hello world\n";
$this->assertEquals($formatted, $formatter->format($record));
}
public function testItShouldInsertRequestIdIfDefined()
{
$formatter = new LineMessageFormatter('%message%');
$record = array(
'message' => 'Hello world',
'datetime' => DateTime::createFromFormat('U', 0),
'level_name' => 'ERROR',
'extra' => array(
'request_id' => 'request id',
),
);
$formatted = "[request id] Hello world\n";
$this->assertEquals($formatted, $formatter->format($record));
}
public function testItShouldIndentMultilineMessage()
{
$formatter = new LineMessageFormatter('%level% %message%');
$record = array(
'message' => "Hello world\ntest\x0Atest",
'datetime' => DateTime::createFromFormat('U', 0),
'level_name' => 'ERROR',
);
$formatted = <<<LOG
ERROR Hello world
test
test
LOG;
$this->assertEquals($formatted, $formatter->format($record));
}
public function testItShouldSplitInlineLineBreaksIntoManyMessagesIfDisabled()
{
$formatter = new LineMessageFormatter('%level% %message%', $allowInlineLineBreaks = false);
$record = array(
'message' => "Hello world\ntest\ntest",
'datetime' => DateTime::createFromFormat('U', 0),
'level_name' => 'ERROR',
'extra' => array('request_id' => '1234'),
);
$formatted = <<<LOG
ERROR [1234] Hello world
ERROR [1234] test
ERROR [1234] test
LOG;
$this->assertEquals($formatted, $formatter->format($record));
}
public function testItShouldEscapeControlCharacters()
{
$formatter = new LineMessageFormatter('%level% %message%', $allowInlineLineBreaks = false);
$record = array(
'message' => "Hello world\x1Btest\ntesttest",
'datetime' => DateTime::createFromFormat('U', 0),
'level_name' => 'ERROR',
);
$formatted = <<<LOG
ERROR Hello world\\033test
ERROR test\\033test
LOG;
$this->assertEquals($formatted, $formatter->format($record));
}
}
|