-
Notifications
You must be signed in to change notification settings - Fork 0
/
Logger.php
86 lines (72 loc) · 1.9 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
<?php
namespace Nelmio\JsLoggerBundle;
use Symfony\Component\HttpKernel\Log\LoggerInterface;
class Logger
{
/**
* @var LoggerInterface
*/
private $logger;
/**
* @var array
*/
private $allowedLevels;
/**
* @var array
*/
private $levelToMethod = array(
'emergency' => 'emerg',
'alert' => 'alert',
'critical' => 'crit',
'error' => 'err',
'warning' => 'warn',
'notice' => 'notice',
'info' => 'info',
'debug' => 'debug',
);
/**
* @var array
*/
private $ignoredMessages;
/**
* @var array
*/
private $ignoredURLs;
/**
* Constructor
*
* @param LoggerInterface $logger
* @param array $allowedLevels
* @param array $ignoredMessages
* @param array $ignoredURLs
*/
public function __construct(LoggerInterface $logger, array $allowedLevels, array $ignoredMessages = array(), array $ignoredURLs = array())
{
$this->logger = $logger;
$this->allowedLevels = $allowedLevels;
$this->ignoredMessages = $ignoredMessages;
$this->ignoredURLs = $ignoredURLs;
}
public function write($level, $message, array $context = array())
{
if (!$message) {
return false;
}
$level = strtolower($level);
if (!in_array($level, $this->allowedLevels)) {
return false;
}
foreach ($this->ignoredURLs as $scriptToIgnore) {
if (strpos($context['file'], $scriptToIgnore) === 0) {
return false;
}
}
foreach ($this->ignoredMessages as $errorToIgnore) {
if (false !== strpos($message, $errorToIgnore)) {
return false;
}
}
$this->logger->{$this->levelToMethod[$level]}($message, $context);
return true;
}
}