Passed
Push — master ( 0937c5...565cca )
by Jean-Christophe
09:59
created

UMonolog   A

Complexity

Total Complexity 15

Size/Duplication

Total Lines 60
Duplicated Lines 0 %

Test Coverage

Coverage 58.81%

Importance

Changes 0
Metric Value
wmc 15
eloc 22
dl 0
loc 60
ccs 20
cts 34
cp 0.5881
rs 10
c 0
b 0
f 0

12 Methods

Rating   Name   Duplication   Size   Complexity  
A _critical() 0 2 1
A _info() 0 2 1
A _error() 0 2 1
A _log() 0 2 1
A __construct() 0 5 1
A _alert() 0 2 1
A _warn() 0 2 1
A _clearAll() 0 3 1
A addProcessor() 0 2 1
A createContext() 0 2 1
A _asObjects() 0 6 4
A _registerError() 0 1 1
1
<?php
2
3
namespace Ubiquity\log\libraries;
4
5
use Ubiquity\log\Logger;
6
use Monolog\Handler\StreamHandler;
7
use Monolog\Formatter\JsonFormatter;
8
use Ubiquity\log\LogMessage;
9
use Ubiquity\utils\base\UFileSystem;
10
11
/**
12
 * Logger class for Monolog
13
 * Ubiquity\log\libraries$UMonolog
14
 * This class is part of Ubiquity
15
 *
16
 * @author jcheron <[email protected]>
17
 * @version 1.0.2
18
 *
19
 */
20
class UMonolog extends Logger {
21
	private $loggerInstance;
22
	private $handler;
23
24 36
	public function __construct($name, $level = \Monolog\Logger::INFO, $path = 'logs/app.log') {
25 36
		$this->loggerInstance = new \Monolog\Logger ( $name );
26 36
		$this->handler = new StreamHandler ( ROOT . DS . $path, $level );
27 36
		$this->handler->setFormatter ( new JsonFormatter () );
28 36
		$this->loggerInstance->pushHandler ( $this->handler );
29 36
	}
30
31 92
	private function createContext($context, $part, $extra = null) {
32 92
		return compact ( "context", "part", "extra" );
33
	}
34
35
	public function addProcessor($callback) {
36
		$this->loggerInstance->pushProcessor ( $callback );
37
	}
38
39
	public function _log($level, $context, $message, $part, $extra) {
40
		return $this->loggerInstance->log ( $level, $message, $this->createContext ( $context, $part, $extra ) );
41
	}
42
43 74
	public function _info($context, $message, $part, $extra) {
44 74
		return $this->loggerInstance->info ( $message, $this->createContext ( $context, $part, $extra ) );
45
	}
46
47 36
	public function _warn($context, $message, $part, $extra) {
48 36
		return $this->loggerInstance->warn ( $message, $this->createContext ( $context, $part, $extra ) );
49
	}
50
51 1
	public function _error($context, $message, $part, $extra) {
52 1
		return $this->loggerInstance->error ( $message, $this->createContext ( $context, $part, $extra ) );
53
	}
54
55
	public function _alert($context, $message, $part, $extra) {
56
		return $this->loggerInstance->alert ( $message, $this->createContext ( $context, $part, $extra ) );
57
	}
58
59
	public function _critical($context, $message, $part, $extra) {
60
		return $this->loggerInstance->critical ( $message, $this->createContext ( $context, $part, $extra ) );
61
	}
62
63 1
	public function _asObjects($reverse = true, $maxlines = 10, $contexts = null) {
64
		return UFileSystem::getLines ( $this->handler->getUrl (), $reverse, $maxlines, function (&$objects, $line) use ($contexts) {
65 1
			$jso = json_decode ( $line );
66 1
			if ($jso !== null) {
67 1
				if ($contexts === null || self::inContext ( $contexts, $jso->context->context )) {
68 1
					LogMessage::addMessage ( $objects, new LogMessage ( $jso->message, $jso->context->context, $jso->context->part, $jso->level, $jso->datetime->date, $jso->context->extra ) );
69
				}
70
			}
71 1
		} );
72
	}
73
74
	public function _clearAll() {
75
		$this->handler->close ();
76
		UFileSystem::deleteFile ( $this->handler->getUrl () );
77
	}
78
79
	public function _registerError() {
80
		// TODO register error handlers
81
	}
82
}
83
84