-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathErrorHandler.php
More file actions
115 lines (97 loc) · 2.94 KB
/
ErrorHandler.php
File metadata and controls
115 lines (97 loc) · 2.94 KB
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
<?php
namespace BaseModule\Factory;
use BaseModule\Logger\Logger as SysLogger;
use BaseModule\Logger\LoggerCollection;
use Zend\Log\Logger;
use Zend\Log\Writer\Stream;
/**
* Factory to create the ErrorHandler
*
* @copyright Felix Buchheim
* @author Felix Buchheim <hanibal4nothing@gmail.com>
*/
class ErrorHandler
{
/**
* Index key for exceptionLogger
*
* @const string
*/
const EXCEPTION_LOGGER = 'exceptionLogger';
/**
* Index key for fatalErrorLogger
*
* @const string
*/
const FATAL_ERROR_LOGGER = 'fatalErrorLogger';
/**
* Index key for sysLogger
*
* @const string
*/
const SYS_LOGGER_LOGGER = 'sysLoggerLogger';
/**
* @var \BaseModule\Logger\ErrorHandler
*/
public static $errorHandler;
/**
* Build errorHandler on first call
*
* @param array $aOptions
*
* @return \BaseModule\Logger\ErrorHandler
*/
public static function factory(array $aOptions)
{
if (false === isset(self::$errorHandler)) {
$oExceptionLogger = (false === empty($aOptions[self::EXCEPTION_LOGGER]['enabled']))
? self::createLogger($aOptions[self::EXCEPTION_LOGGER]['path'])
: null;
$oErrorLogger = (false === empty($aOptions[self::FATAL_ERROR_LOGGER]['enabled']))
? self::createLogger($aOptions[self::FATAL_ERROR_LOGGER]['path'])
: null;
$oErrorHandler = new \BaseModule\Logger\ErrorHandler(
$oExceptionLogger,
$oErrorLogger,
self::buildSysLogger($aOptions)
);
self::$errorHandler = $oErrorHandler;
}
return self::$errorHandler;
}
/**
* Build sysLoggerCollection
*
* @param array $aOptions
*
* @return LoggerCollection|null
*/
protected static function buildSysLogger(array $aOptions)
{
$oLoggerCollection = null;
if (false === empty($aOptions[self::SYS_LOGGER_LOGGER]['enabled'])) {
$oLoggerCollection = new LoggerCollection();
foreach ($aOptions[self::SYS_LOGGER_LOGGER]['paths'] as $iPriority => $sPath) {
$oLoggerCollection->add(self::createLogger($sPath, new SysLogger($iPriority)));
}
}
return $oLoggerCollection;
}
/**
* Create single Logger and add writer
*
* @param string $sLogPath
* @param Logger|null $oLogger
*
* @return \Zend\Log\Logger|SysLogger
*/
protected static function createLogger($sLogPath, Logger $oLogger = null)
{
if (false === is_dir($sLogPath)) {
throw new \RuntimeException('Directory not exist: ' . $sLogPath);
}
$oLogger = (false === isset($oLogger)) ? new Logger() : $oLogger;
$sFilename = 'log_' . date('d-m-Y') . '.txt';
return $oLogger->addWriter(new Stream($sLogPath . $sFilename));
}
}