Completed
Push — master ( b589b0...200ed5 )
by Ryuichi
07:09
created

LoggerUtils   A

Complexity

Total Complexity 16

Size/Duplication

Total Lines 75
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Test Coverage

Coverage 67.65%

Importance

Changes 0
Metric Value
wmc 16
lcom 0
cbo 0
dl 0
loc 75
ccs 23
cts 34
cp 0.6765
rs 10
c 0
b 0
f 0

4 Methods

Rating   Name   Duplication   Size   Complexity  
A defaultLoggerFormatter() 0 4 1
A defaultDateTimeFormatter() 0 4 1
A addStackTrace() 0 14 3
C toLogLevelValue() 0 26 11
1
<?php
2
namespace WebStream\Log;
3
4
use WebStream\Exception\Extend\LoggerException;
5
6
/**
7
 * LoggerUtils
8
 * @author Ryuichi Tanaka
9
 * @since 2015/12/26
10
 * @version 0.7
11
 */
12
trait LoggerUtils
13
{
14
    /**
15
     * デフォルトロガーフォーマッタ
16
     * @return string デフォルトロガーフォーマッタ
17
     */
18
    public function defaultLoggerFormatter()
19
    {
20
        return '[%d{' . $this->defaultDateTimeFormatter() . '.%f}][%5L] %m';
21
    }
22
23
    /**
24
     * デフォルトDateTimeフォーマッタ
25
     * @return string デフォルトDateTimeフォーマッタ
26
     */
27 2
    public function defaultDateTimeFormatter()
28
    {
29 2
        return "%Y-%m-%d %H:%M:%S";
30
    }
31
32
    /**
33
     * ログメッセージにスタックトレースの内容を追加する
34
     * @param string ログメッセージ
35
     * @param string スタックトレース文字列
36
     * @return string 加工済みログメッセージ
37
     */
38
    public function addStackTrace($msg, $stacktrace)
39
    {
40
        // スタックトレースから原因となるエラー箇所のみ抽出
41
        $stacktraceList = explode("#", $stacktrace);
42
        foreach ($stacktraceList as $stacktraceLine) {
43
            if ($stacktraceLine === "") {
44
                continue;
45
            }
46
            $msg .= PHP_EOL;
47
            $msg .= "\t#" . trim($stacktraceLine);
48
        }
49
50
        return $msg;
51
    }
52
53
    /**
54
     * ログレベルを数値に変換
55
     * ログレベルはWebStream独自、PSR-3両方対応
56
     * @param string ログレベル文字列
57
     * @throws LoggerException
58
     * @return int ログレベル数値
59
     */
60 141
    public function toLogLevelValue(string $level)
61
    {
62 141
        switch (strtolower($level)) {
63 141
            case 'debug':
64 28
                return 1;
65 113
            case 'info':
66 25
                return 2;
67 88
            case 'notice':    // PSR-3
68 11
                return 3;
69 77
            case 'warn':
70 66
            case 'warning':   // PSR-3
71 22
                return 4;
72 55
            case 'error':
73 11
                return 5;
74 44
            case 'critical':  // PSR-3
75 11
                return 6;
76 33
            case 'alert':     // PSR-3
77 11
                return 7;
78 22
            case 'emergency': // PSR-3
79 11
                return 8;
80 11
            case 'fatal':
81 11
                return 9;
82
            default:
83
                throw new LoggerException("Undefined log level: $level");
84
        }
85
    }
86
}
87