1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
namespace yiicod\base\helpers; |
4
|
|
|
|
5
|
|
|
use Throwable; |
6
|
|
|
|
7
|
|
|
/** |
8
|
|
|
* Class LoggerMessage |
9
|
|
|
* Logger helper |
10
|
|
|
* |
11
|
|
|
* @package yiicod\base\helpers |
12
|
|
|
*/ |
13
|
|
|
class LoggerMessage |
14
|
|
|
{ |
15
|
|
|
/** |
16
|
|
|
* Return error message |
17
|
|
|
* |
18
|
|
|
* @param Throwable $e |
19
|
|
|
* @param string $additional |
20
|
|
|
* |
21
|
|
|
* @return string |
22
|
|
|
*/ |
23
|
|
|
public static function log(Throwable $e, string $additional = ''): string |
24
|
|
|
{ |
25
|
|
|
if (false === empty($additional)) { |
26
|
|
|
return sprintf("%s (%s : %s)\nAdditional message:\n%s\nStack trace:\n%s", $e->getMessage(), $e->getFile(), $e->getLine(), $additional, $e->getTraceAsString()); |
27
|
|
|
} else { |
28
|
|
|
return sprintf("%s (%s : %s)\nStack trace:\n%s", $e->getMessage(), $e->getFile(), $e->getLine(), $e->getTraceAsString()); |
29
|
|
|
} |
30
|
|
|
} |
31
|
|
|
|
32
|
|
|
/** |
33
|
|
|
* Get trace message |
34
|
|
|
* |
35
|
|
|
* @param string $message |
36
|
|
|
* @param array $data |
37
|
|
|
* |
38
|
|
|
* @return string |
39
|
|
|
*/ |
40
|
|
|
public static function trace(string $message, array $data = []): string |
41
|
|
|
{ |
42
|
|
|
return self::message($message, $data, 5); |
43
|
|
|
} |
44
|
|
|
|
45
|
|
|
/** |
46
|
|
|
* Get info message |
47
|
|
|
* |
48
|
|
|
* @param string $message |
49
|
|
|
* @param array $data |
50
|
|
|
* |
51
|
|
|
* @return string |
52
|
|
|
*/ |
53
|
|
|
public static function info(string $message, array $data = []): string |
54
|
|
|
{ |
55
|
|
|
if (YII_ENV_TEST) { |
56
|
|
|
return self::message($message, $data, 5); |
57
|
|
|
} else { |
58
|
|
|
return ''; |
59
|
|
|
} |
60
|
|
|
} |
61
|
|
|
|
62
|
|
|
/** |
63
|
|
|
* Get message with trace level |
64
|
|
|
* |
65
|
|
|
* @param string $message |
66
|
|
|
* @param array $data |
67
|
|
|
* @param int $traceLevel |
68
|
|
|
* |
69
|
|
|
* @return string |
70
|
|
|
*/ |
71
|
|
|
private static function message(string $message, array $data = [], $traceLevel = 5): string |
72
|
|
|
{ |
73
|
|
|
$msg = sprintf('%s', str_replace(array_map(function ($item) { |
74
|
|
|
return '{' . $item . '}'; |
75
|
|
|
}, array_keys($data)), |
76
|
|
|
array_values($data), $message)); |
77
|
|
|
$msg = sprintf('%s', str_replace(array_keys($data), array_values($data), $msg)); |
78
|
|
|
if ($traceLevel > 0) { |
79
|
|
|
$traces = debug_backtrace(); |
80
|
|
|
unset($traces[0]); //Remove LoggerMessage from trace |
81
|
|
|
$count = 0; |
82
|
|
|
foreach ($traces as $trace) { |
83
|
|
|
if (isset($trace['file'], $trace['line']) && 0 !== strpos($trace['file'], YII2_PATH)) { |
84
|
|
|
$msg .= "\nin " . $trace['file'] . ' (' . $trace['line'] . ')'; |
85
|
|
|
if (++$count >= $traceLevel) { |
86
|
|
|
break; |
87
|
|
|
} |
88
|
|
|
} |
89
|
|
|
} |
90
|
|
|
} |
91
|
|
|
|
92
|
|
|
return $msg; |
93
|
|
|
} |
94
|
|
|
} |
95
|
|
|
|