Newer
Older
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
<?php
namespace Tests\Library;
class Logger {
use \Library\LoggerTrait;
}
class LoggerTraitTest extends \PHPUnit_Framework_TestCase {
public function test_default_init_logger() {
$testlog = new \Tests\Library\Logger();
$this->assertNull($testlog->get_logger(), "no logger without init_logger()");
$testlog->init_logger([]);
$logger = $testlog->get_logger();
$this->assertInstanceOf("\Monolog\Logger", $logger, 'get_logger() returns instance of \Monolog\Logger');
$this->assertEquals("default", $logger->getName(), "default name");
$handlers = $logger->getHandlers();
$this->assertEquals(1, count($handlers), "default logger has 1 handler");
$handler = $handlers[0];
$this->assertInstanceOf("\Monolog\Handler\StreamHandler", $handler, 'default log handler is a StreamHandler');
$this->assertEquals("php://stderr", $handler->getUrl(), "default log handler path (url)");
$this->assertEquals(\Monolog\Logger::toMonologLevel("info"), $handler->getLevel(), "default log handler level is 'info'");
$formatter = $handler->getFormatter();
$this->assertInstanceOf("\Monolog\Formatter\LineFormatter", $formatter, 'default log handler formatter is a LineFormatter');
}
public function test_init_logger_single_handler() {
$settings = [
"name" => "test-logger",
"path" => "log/test.log",
"level" => "debug",
"format" => "[%datetime%]%level_name% %extra% %context%: %message%", // not testable
];
$testlog = new \Tests\Library\Logger();
$testlog->init_logger($settings);
$logger = $testlog->get_logger();
$this->assertEquals($settings["name"], $logger->getName(), "name");
$handlers = $logger->getHandlers();
$this->assertEquals(1, count($handlers), "logger has 1 handler");
$handler = $handlers[0];
$this->assertEquals("./" . $settings["path"], $handler->getUrl(), "log handler path (with default basedir)");
$this->assertEquals(\Monolog\Logger::toMonologLevel($settings["level"]), $handler->getLevel(), "log handler level");
$basedir = "/var/log/local";
$testlog = new \Tests\Library\Logger();
$testlog->init_logger($settings, $basedir);
$logger = $testlog->get_logger();
$this->assertEquals($settings["name"], $logger->getName(), "name");
$handlers = $logger->getHandlers();
$this->assertEquals(1, count($handlers), "logger has 1 handler");
$handler = $handlers[0];
$this->assertEquals("$basedir/" . $settings["path"], $handler->getUrl(), "log handler path (with passed basedir)");
$this->assertEquals(\Monolog\Logger::toMonologLevel($settings["level"]), $handler->getLevel(), "log handler level");
}
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
public function test_init_logger_two_handlers() {
$basedir = "/var/log/local";
$settings = [
"name" => "test-logger",
"handler" => [
[
"path" => "log/test.log",
"expectpath" => "$basedir/log/test.log", // expected path for testing
"level" => "debug",
"format" => "[%datetime%]%level_name% %extra% %context%: %message%", // not testable
],
[
"path" => "php://stdout",
"expectpath" => "php://stdout",
"level" => "warning",
"format" => "[%datetime%]%level_name% %extra% %context%: %message%", // not testable
],
],
];
$testlog = new \Tests\Library\Logger();
$testlog->init_logger($settings, $basedir);
$logger = $testlog->get_logger();
$this->assertEquals($settings["name"], $logger->getName(), "name");
$expects = $settings["handler"];
$handlers = $logger->getHandlers();
$this->assertEquals(count($expects), count($handlers), "number of handlers in settings");
for ($i = 0; $i < count($expects); $i++) {
$expect = $expects[$i];
$handler = array_pop($handlers); // handlers are in reverse order
$this->assertEquals($expect["expectpath"], $handler->getUrl(), "$i: log handler path");
$this->assertEquals(\Monolog\Logger::toMonologLevel($expect["level"]), $handler->getLevel(), "$i: log handler level");
}
}