Passed
Push — master ( 03e071...62bcb6 )
by Jean-Christophe
11:00
created

UMonolog::_alert()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 2
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 1
c 1
b 0
f 0
dl 0
loc 2
ccs 2
cts 2
cp 1
rs 10
cc 1
nc 1
nop 4
crap 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.3
18
 *
19
 */
20
class UMonolog extends Logger {
21
	/**
22
	 *
23
	 * @var \Monolog\Logger
24
	 */
25
	private $loggerInstance;
26
	private $handler;
27
28 43
	public function __construct($name, $level = \Monolog\Logger::INFO, $path = 'logs/app.log') {
29 43
		$this->loggerInstance = new \Monolog\Logger ( $name );
30 43
		$this->handler = new StreamHandler ( ROOT . DS . $path, $level );
31 43
		$this->handler->setFormatter ( new JsonFormatter () );
32 43
		$this->loggerInstance->pushHandler ( $this->handler );
33 43
	}
34
35 91
	private function createContext($context, $part, $extra = null) {
36 91
		return compact ( "context", "part", "extra" );
37
	}
38
39
	public function addProcessor($callback) {
40
		$this->loggerInstance->pushProcessor ( $callback );
41
	}
42
43 1
	public function _log($level, $context, $message, $part, $extra) {
44 1
		$this->loggerInstance->log ( $level, $message, $this->createContext ( $context, $part, $extra ) );
45 1
	}
46
47 89
	public function _info($context, $message, $part, $extra) {
48 89
		$this->loggerInstance->info ( $message, $this->createContext ( $context, $part, $extra ) );
49 89
	}
50
51 3
	public function _warn($context, $message, $part, $extra) {
52 3
		$this->loggerInstance->warning ( $message, $this->createContext ( $context, $part, $extra ) );
53 3
	}
54
55 1
	public function _error($context, $message, $part, $extra) {
56 1
		$this->loggerInstance->error ( $message, $this->createContext ( $context, $part, $extra ) );
57 1
	}
58
59 1
	public function _alert($context, $message, $part, $extra) {
60 1
		$this->loggerInstance->alert ( $message, $this->createContext ( $context, $part, $extra ) );
61 1
	}
62
63 1
	public function _critical($context, $message, $part, $extra) {
64 1
		$this->loggerInstance->critical ( $message, $this->createContext ( $context, $part, $extra ) );
65 1
	}
66
67 2
	public function _asObjects($reverse = true, $maxlines = 10, $contexts = null) {
68
		return UFileSystem::getLines ( $this->handler->getUrl (), $reverse, $maxlines, function (&$objects, $line) use ($contexts) {
69 2
			$jso = json_decode ( $line );
70 2
			if ($jso !== null) {
71 2
				if ($contexts === null || self::inContext ( $contexts, $jso->context->context )) {
72 2
					if (isset ( $jso->context->extra )) {
73 1
						if (is_object ( $jso->context->extra )) {
74 1
							$extra = [ ];
75 1
							foreach ( $jso->context->extra as $k => $v ) {
76 1
								if (is_object ( $v )) {
77
									$v = json_encode ( $v );
78
								}
79 1
								$extra [] = "$k: $v";
80
							}
81 1
							$jso->context->extra = $extra;
82
						}
83
					}
84 2
					LogMessage::addMessage ( $objects, new LogMessage ( $jso->message, $jso->context->context, $jso->context->part, $jso->level, $jso->datetime, $jso->context->extra ) );
85
				}
86
			}
87 2
		} );
88
	}
89
90 2
	public function _clearAll() {
91 2
		$this->handler->close ();
92 2
		UFileSystem::deleteFile ( $this->handler->getUrl () );
93 2
	}
94
95 1
	public function _close() {
96 1
		$this->handler->close ();
97 1
	}
98
99
	public function _registerError() {
100
		// TODO register error handlers
101
	}
102
}
103
104