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

UMonolog::addProcessor()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 2
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
eloc 1
dl 0
loc 2
ccs 0
cts 2
cp 0
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 1
crap 2
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