1 | <?php |
||
29 | class StakxLogger extends AbstractLogger |
||
30 | { |
||
31 | const INFO = 'info'; |
||
32 | const ERROR = 'error'; |
||
33 | |||
34 | /** |
||
35 | * @var OutputInterface |
||
36 | */ |
||
37 | private $output; |
||
38 | |||
39 | /** |
||
40 | * @var array |
||
41 | */ |
||
42 | private $verbosityLevelMap = array( |
||
43 | LogLevel::EMERGENCY => OutputInterface::VERBOSITY_NORMAL, |
||
44 | LogLevel::ALERT => OutputInterface::VERBOSITY_NORMAL, |
||
45 | LogLevel::CRITICAL => OutputInterface::VERBOSITY_NORMAL, |
||
46 | LogLevel::ERROR => OutputInterface::VERBOSITY_NORMAL, |
||
47 | LogLevel::WARNING => OutputInterface::VERBOSITY_NORMAL, |
||
48 | LogLevel::NOTICE => OutputInterface::VERBOSITY_VERBOSE, |
||
49 | LogLevel::INFO => OutputInterface::VERBOSITY_VERY_VERBOSE, |
||
50 | LogLevel::DEBUG => OutputInterface::VERBOSITY_DEBUG, |
||
51 | ); |
||
52 | |||
53 | /** |
||
54 | * @var array |
||
55 | */ |
||
56 | private $formatLevelMap = array( |
||
57 | LogLevel::EMERGENCY => self::ERROR, |
||
58 | LogLevel::ALERT => self::ERROR, |
||
59 | LogLevel::CRITICAL => self::ERROR, |
||
60 | LogLevel::ERROR => self::ERROR, |
||
61 | LogLevel::WARNING => self::INFO, |
||
62 | LogLevel::NOTICE => self::INFO, |
||
63 | LogLevel::INFO => self::INFO, |
||
64 | LogLevel::DEBUG => self::INFO, |
||
65 | ); |
||
66 | |||
67 | /** |
||
68 | * ConsoleInterface constructor. |
||
69 | * |
||
70 | * @param OutputInterface $output |
||
71 | */ |
||
72 | 10 | public function __construct(OutputInterface $output) |
|
76 | |||
77 | /** |
||
78 | * Return the OutputInterface object. |
||
79 | * |
||
80 | * @return OutputInterface |
||
81 | */ |
||
82 | 10 | public function getOutputInterface() |
|
86 | |||
87 | /** |
||
88 | * Logs with an arbitrary level. |
||
89 | * |
||
90 | * @param mixed $level |
||
91 | * @param string $message |
||
92 | * @param array $context |
||
93 | */ |
||
94 | 10 | public function log($level, $message, array $context = array()) |
|
95 | { |
||
96 | 10 | if (!isset($this->verbosityLevelMap[$level])) |
|
97 | { |
||
98 | throw new InvalidArgumentException(sprintf('The log level "%s" does not exist.', $level)); |
||
99 | } |
||
100 | |||
101 | 10 | $verbosity = $this->output->getVerbosity(); |
|
102 | |||
103 | 10 | if ($verbosity >= $this->verbosityLevelMap[$level]) |
|
104 | { |
||
105 | 9 | $prefix = ''; |
|
106 | |||
107 | 9 | if ($verbosity >= OutputInterface::VERBOSITY_VERBOSE) |
|
108 | { |
||
109 | $prefix = sprintf('[%s] ', date('H:i:s')); |
||
110 | } |
||
111 | |||
112 | 9 | $this->output->writeln( |
|
113 | 9 | sprintf('<%1$s>%2$s[%3$s] %4$s</%1$s>', |
|
114 | 9 | $this->formatLevelMap[$level], |
|
115 | $prefix, |
||
116 | $level, |
||
117 | 9 | $this->interpolate($message, $context) |
|
118 | ) |
||
119 | ); |
||
120 | } |
||
121 | 10 | } |
|
122 | |||
123 | /** |
||
124 | * Writes a message to the output and adds a newline at the end. |
||
125 | * |
||
126 | * @param string|array $messages The message as an array of lines of a single string |
||
127 | * @param int $options A bitmask of options (one of the OUTPUT or VERBOSITY constants), 0 is considered |
||
128 | * the same as self::OUTPUT_NORMAL | self::VERBOSITY_NORMAL |
||
129 | */ |
||
130 | public function writeln($messages, $options = 0) |
||
134 | |||
135 | /** |
||
136 | * Interpolates context values into the message placeholders. |
||
137 | * |
||
138 | * @author PHP Framework Interoperability Group |
||
139 | * |
||
140 | * @param string $message |
||
141 | * @param array $context |
||
142 | * |
||
143 | * @return string |
||
144 | */ |
||
145 | 9 | private function interpolate($message, array $context) |
|
160 | } |
||
161 |