1 <?php
2
3 namespace Psr\Log;
4
5 /**
6 * This is a simple Logger trait that classes unable to extend AbstractLogger
7 * (because they extend another class, etc) can include.
8 *
9 * It simply delegates all log-level-specific methods to the `log` method to
10 * reduce boilerplate code that a simple Logger that does the same thing with
11 * messages regardless of the error level has to implement.
12 */
13 trait LoggerTrait
14 {
15 /**
16 * System is unusable.
17 *
18 * @param string $message
19 * @param array $context
20 * @return null
21 */
22 public function emergency($message, array $context = array())
23 {
24 $this->log(LogLevel::EMERGENCY, $message, $context);
25 }
26
27 /**
28 * Action must be taken immediately.
29 *
30 * Example: Entire website down, database unavailable, etc. This should
31 * trigger the SMS alerts and wake you up.
32 *
33 * @param string $message
34 * @param array $context
35 * @return null
36 */
37 public function alert($message, array $context = array())
38 {
39 $this->log(LogLevel::ALERT, $message, $context);
40 }
41
42 /**
43 * Critical conditions.
44 *
45 * Example: Application component unavailable, unexpected exception.
46 *
47 * @param string $message
48 * @param array $context
49 * @return null
50 */
51 public function critical($message, array $context = array())
52 {
53 $this->log(LogLevel::CRITICAL, $message, $context);
54 }
55
56 /**
57 * Runtime errors that do not require immediate action but should typically
58 * be logged and monitored.
59 *
60 * @param string $message
61 * @param array $context
62 * @return null
63 */
64 public function error($message, array $context = array())
65 {
66 $this->log(LogLevel::ERROR, $message, $context);
67 }
68
69 /**
70 * Exceptional occurrences that are not errors.
71 *
72 * Example: Use of deprecated APIs, poor use of an API, undesirable things
73 * that are not necessarily wrong.
74 *
75 * @param string $message
76 * @param array $context
77 * @return null
78 */
79 public function warning($message, array $context = array())
80 {
81 $this->log(LogLevel::WARNING, $message, $context);
82 }
83
84 /**
85 * Normal but significant events.
86 *
87 * @param string $message
88 * @param array $context
89 * @return null
90 */
91 public function notice($message, array $context = array())
92 {
93 $this->log(LogLevel::NOTICE, $message, $context);
94 }
95
96 /**
97 * Interesting events.
98 *
99 * Example: User logs in, SQL logs.
100 *
101 * @param string $message
102 * @param array $context
103 * @return null
104 */
105 public function info($message, array $context = array())
106 {
107 $this->log(LogLevel::INFO, $message, $context);
108 }
109
110 /**
111 * Detailed debug information.
112 *
113 * @param string $message
114 * @param array $context
115 * @return null
116 */
117 public function debug($message, array $context = array())
118 {
119 $this->log(LogLevel::DEBUG, $message, $context);
120 }
121
122 /**
123 * Logs with an arbitrary level.
124 *
125 * @param mixed $level
126 * @param string $message
127 * @param array $context
128 * @return null
129 */
130 abstract public function log($level, $message, array $context = array());
131 }
132