Logger::log()   A
last analyzed

Complexity

Conditions 3
Paths 2

Size

Total Lines 16
Code Lines 10

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 10
CRAP Score 3

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 16
ccs 10
cts 10
cp 1
rs 9.4285
cc 3
eloc 10
nc 2
nop 3
crap 3
1
<?php
2
/**
3
 * Created by PhpStorm.
4
 * User: tamaskovacs
5
 * Date: 2017. 01. 28.
6
 * Time: 0:24
7
 */
8
9
namespace Callisto;
10
11
12
use Psr\Log\AbstractLogger;
13
14
class Logger extends AbstractLogger
15
{
16
	/**
17
	 * @var resource
18
	 */
19
	protected $handler;
20
21
22
	/**
23
	 * Logger constructor.
24
	 * @param resource $handler
25
	 */
26 2
	public function __construct($handler)
27
	{
28 2
		$this->handler = $handler;
29 2
	}
30
31
	/**
32
	 * Logs with an arbitrary level.
33
	 *
34
	 * @param mixed $level
35
	 * @param string $message
36
	 * @param array $loggedParameters
37
	 *
38
	 * @return void
39
	 */
40
	public function log($level, $message, array $loggedParameters = array())
41
	{
42 2
		$loggedParameters = array_map(function($loggedParameter) {
0 ignored issues
show
Coding Style introduced by
Consider using a different name than the parameter $loggedParameters. This often makes code more readable.
Loading history...
43 2
			if (is_object($loggedParameter)) {
44 1
				$loggedParameter = json_encode($loggedParameter);
0 ignored issues
show
Coding Style introduced by
Consider using a different name than the parameter $loggedParameter. This often makes code more readable.
Loading history...
45
			}
46
47 2
			return str_replace("\n", ' ', $loggedParameter);
48 2
		}, $loggedParameters);
49
50 2
		$dateTime = new \DateTime();
51 2
		$contextStr = empty($loggedParameters) ? '' : ' ["' . implode('","', $loggedParameters) . '"]';
52
53 2
		$msg = '[' . $dateTime->format('Y-m-d H:i:s') . '] Callisto.' . $level . ': ' . $message . $contextStr . PHP_EOL;
54 2
		fwrite($this->handler, $msg, strlen($msg));
55 2
	}
56
}
57