ILIAS  release_5-3 Revision v5.3.23-19-g915713cf615
JsonFormatterTest.php
Go to the documentation of this file.
1 <?php
2 
3 /*
4  * This file is part of the Monolog package.
5  *
6  * (c) Jordi Boggiano <j.boggiano@seld.be>
7  *
8  * For the full copyright and license information, please view the LICENSE
9  * file that was distributed with this source code.
10  */
11 
12 namespace Monolog\Formatter;
13 
14 use Monolog\Logger;
16 
18 {
24  public function testConstruct()
25  {
26  $formatter = new JsonFormatter();
27  $this->assertEquals(JsonFormatter::BATCH_MODE_JSON, $formatter->getBatchMode());
28  $this->assertEquals(true, $formatter->isAppendingNewlines());
29  $formatter = new JsonFormatter(JsonFormatter::BATCH_MODE_NEWLINES, false);
30  $this->assertEquals(JsonFormatter::BATCH_MODE_NEWLINES, $formatter->getBatchMode());
31  $this->assertEquals(false, $formatter->isAppendingNewlines());
32  }
33 
37  public function testFormat()
38  {
39  $formatter = new JsonFormatter();
40  $record = $this->getRecord();
41  $this->assertEquals(json_encode($record)."\n", $formatter->format($record));
42 
43  $formatter = new JsonFormatter(JsonFormatter::BATCH_MODE_JSON, false);
44  $record = $this->getRecord();
45  $this->assertEquals(json_encode($record), $formatter->format($record));
46  }
47 
52  public function testFormatBatch()
53  {
54  $formatter = new JsonFormatter();
55  $records = array(
56  $this->getRecord(Logger::WARNING),
57  $this->getRecord(Logger::DEBUG),
58  );
59  $this->assertEquals(json_encode($records), $formatter->formatBatch($records));
60  }
61 
66  public function testFormatBatchNewlines()
67  {
69  $records = $expected = array(
70  $this->getRecord(Logger::WARNING),
71  $this->getRecord(Logger::DEBUG),
72  );
73  array_walk($expected, function (&$value, $key) {
74  $value = json_encode($value);
75  });
76  $this->assertEquals(implode("\n", $expected), $formatter->formatBatch($records));
77  }
78 
79  public function testDefFormatWithException()
80  {
81  $formatter = new JsonFormatter();
82  $exception = new \RuntimeException('Foo');
83  $message = $formatter->format(array(
84  'level_name' => 'CRITICAL',
85  'channel' => 'core',
86  'context' => array('exception' => $exception),
87  'datetime' => new \DateTime(),
88  'extra' => array(),
89  'message' => 'foobar',
90  ));
91 
92  if (version_compare(PHP_VERSION, '5.4.0', '>=')) {
93  $path = substr(json_encode($exception->getFile(), JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE), 1, -1);
94  } else {
95  $path = substr(json_encode($exception->getFile()), 1, -1);
96  }
97  $this->assertEquals('{"level_name":"CRITICAL","channel":"core","context":{"exception":{"class":"RuntimeException","message":"'.$exception->getMessage().'","code":'.$exception->getCode().',"file":"'.$path.':'.$exception->getLine().'"}},"datetime":'.json_encode(new \DateTime()).',"extra":[],"message":"foobar"}'."\n", $message);
98  }
99 
101  {
102  $formatter = new JsonFormatter();
103  $exception = new \RuntimeException('Foo', 0, new \LogicException('Wut?'));
104  $message = $formatter->format(array(
105  'level_name' => 'CRITICAL',
106  'channel' => 'core',
107  'context' => array('exception' => $exception),
108  'datetime' => new \DateTime(),
109  'extra' => array(),
110  'message' => 'foobar',
111  ));
112 
113  if (version_compare(PHP_VERSION, '5.4.0', '>=')) {
114  $pathPrevious = substr(json_encode($exception->getPrevious()->getFile(), JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE), 1, -1);
115  $pathException = substr(json_encode($exception->getFile(), JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE), 1, -1);
116  } else {
117  $pathPrevious = substr(json_encode($exception->getPrevious()->getFile()), 1, -1);
118  $pathException = substr(json_encode($exception->getFile()), 1, -1);
119  }
120  $this->assertEquals('{"level_name":"CRITICAL","channel":"core","context":{"exception":{"class":"RuntimeException","message":"'.$exception->getMessage().'","code":'.$exception->getCode().',"file":"'.$pathException.':'.$exception->getLine().'","previous":{"class":"LogicException","message":"'.$exception->getPrevious()->getMessage().'","code":'.$exception->getPrevious()->getCode().',"file":"'.$pathPrevious.':'.$exception->getPrevious()->getLine().'"}}},"datetime":'.json_encode(new \DateTime()).',"extra":[],"message":"foobar"}'."\n", $message);
121  }
122 }
testFormatBatchNewlines()
Monolog::formatBatch Monolog::formatBatchNewlines
const DEBUG
Detailed debug information.
Definition: Logger.php:32
$records
Definition: simple_test.php:22
getRecord($level=Logger::WARNING, $message='test', $context=array())
Definition: TestCase.php:19
catch(Exception $e) $message
const WARNING
Exceptional occurrences that are not errors.
Definition: Logger.php:52
testFormatBatch()
Monolog::formatBatch Monolog::formatBatchJson
Create styles array
The data for the language used.
Encodes whatever record data is passed to it as json.
testConstruct()
Monolog::__construct Monolog::getBatchMode Monolog::isAppendingNewlines
$key
Definition: croninfo.php:18