-
Notifications
You must be signed in to change notification settings - Fork 0
/
Logger.php
137 lines (120 loc) · 2.42 KB
/
Logger.php
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
<?php
declare(strict_types=1);
namespace Webiik\Log;
use Webiik\Log\Logger\LoggerInterface;
class Logger
{
/**
* @var array
*/
private $levels = [];
/**
* @var array
*/
private $groups = [];
/**
* @var array
*/
private $negativeGroups = [];
/**
* Logger factory or instance after call getInstance
* @var callable|LoggerInterface
*/
private $logger;
/**
* Logger constructor.
* @param callable $factory
*/
public function __construct(callable $factory)
{
$this->logger = $factory;
}
/**
* @return array
*/
public function getLevels(): array
{
return $this->levels;
}
/**
* @param array $levels
* @return Logger
*/
public function setLevels(array $levels): Logger
{
$this->levels = $levels;
return $this;
}
/**
* @param string $level
* @return Logger
*/
public function setLevel(string $level): Logger
{
$this->levels = [$level];
return $this;
}
/**
* @return array
*/
public function getGroups(): array
{
return $this->groups;
}
/**
* @param array $groups
* @return Logger
*/
public function setGroups(array $groups): Logger
{
$this->groups = $groups;
return $this;
}
/**
* @param string $group
* @return Logger
*/
public function setGroup(string $group): Logger
{
$this->groups = [$group];
return $this;
}
/**
* @return array
*/
public function getNegativeGroups(): array
{
return $this->negativeGroups;
}
/**
* @param array $groups
* @return Logger
*/
public function setNegativeGroups(array $groups): Logger
{
$this->negativeGroups = $groups;
return $this;
}
/**
* @param string $group
* @return Logger
*/
public function setNegativeGroup(string $group): Logger
{
$this->negativeGroups = [$group];
return $this;
}
/**
* Get underlying logger instance
* @return LoggerInterface
*/
public function getInstance(): LoggerInterface
{
// Instantiate logger only once
if (is_callable($this->logger)) {
$logger = $this->logger;
$this->logger = $logger();
}
return $this->logger;
}
}