blob: 9c8733f957fdf7dd1737de7d42e570431ab60380 [file] [log] [blame]
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +02001<?php
2
3namespace 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 */
13trait LoggerTrait
14{
15 /**
16 * System is unusable.
17 *
Matthias Andreas Benkard1ba53812022-12-27 17:32:58 +010018 * @param string|\Stringable $message
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +020019 * @param array $context
20 *
21 * @return void
22 */
Matthias Andreas Benkard1ba53812022-12-27 17:32:58 +010023 public function emergency(string|\Stringable $message, array $context = []): void
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +020024 {
25 $this->log(LogLevel::EMERGENCY, $message, $context);
26 }
27
28 /**
29 * Action must be taken immediately.
30 *
31 * Example: Entire website down, database unavailable, etc. This should
32 * trigger the SMS alerts and wake you up.
33 *
Matthias Andreas Benkard1ba53812022-12-27 17:32:58 +010034 * @param string|\Stringable $message
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +020035 * @param array $context
36 *
37 * @return void
38 */
Matthias Andreas Benkard1ba53812022-12-27 17:32:58 +010039 public function alert(string|\Stringable $message, array $context = []): void
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +020040 {
41 $this->log(LogLevel::ALERT, $message, $context);
42 }
43
44 /**
45 * Critical conditions.
46 *
47 * Example: Application component unavailable, unexpected exception.
48 *
Matthias Andreas Benkard1ba53812022-12-27 17:32:58 +010049 * @param string|\Stringable $message
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +020050 * @param array $context
51 *
52 * @return void
53 */
Matthias Andreas Benkard1ba53812022-12-27 17:32:58 +010054 public function critical(string|\Stringable $message, array $context = []): void
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +020055 {
56 $this->log(LogLevel::CRITICAL, $message, $context);
57 }
58
59 /**
60 * Runtime errors that do not require immediate action but should typically
61 * be logged and monitored.
62 *
Matthias Andreas Benkard1ba53812022-12-27 17:32:58 +010063 * @param string|\Stringable $message
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +020064 * @param array $context
65 *
66 * @return void
67 */
Matthias Andreas Benkard1ba53812022-12-27 17:32:58 +010068 public function error(string|\Stringable $message, array $context = []): void
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +020069 {
70 $this->log(LogLevel::ERROR, $message, $context);
71 }
72
73 /**
74 * Exceptional occurrences that are not errors.
75 *
76 * Example: Use of deprecated APIs, poor use of an API, undesirable things
77 * that are not necessarily wrong.
78 *
Matthias Andreas Benkard1ba53812022-12-27 17:32:58 +010079 * @param string|\Stringable $message
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +020080 * @param array $context
81 *
82 * @return void
83 */
Matthias Andreas Benkard1ba53812022-12-27 17:32:58 +010084 public function warning(string|\Stringable $message, array $context = []): void
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +020085 {
86 $this->log(LogLevel::WARNING, $message, $context);
87 }
88
89 /**
90 * Normal but significant events.
91 *
Matthias Andreas Benkard1ba53812022-12-27 17:32:58 +010092 * @param string|\Stringable $message
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +020093 * @param array $context
94 *
95 * @return void
96 */
Matthias Andreas Benkard1ba53812022-12-27 17:32:58 +010097 public function notice(string|\Stringable $message, array $context = []): void
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +020098 {
99 $this->log(LogLevel::NOTICE, $message, $context);
100 }
101
102 /**
103 * Interesting events.
104 *
105 * Example: User logs in, SQL logs.
106 *
Matthias Andreas Benkard1ba53812022-12-27 17:32:58 +0100107 * @param string|\Stringable $message
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +0200108 * @param array $context
109 *
110 * @return void
111 */
Matthias Andreas Benkard1ba53812022-12-27 17:32:58 +0100112 public function info(string|\Stringable $message, array $context = []): void
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +0200113 {
114 $this->log(LogLevel::INFO, $message, $context);
115 }
116
117 /**
118 * Detailed debug information.
119 *
Matthias Andreas Benkard1ba53812022-12-27 17:32:58 +0100120 * @param string|\Stringable $message
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +0200121 * @param array $context
122 *
123 * @return void
124 */
Matthias Andreas Benkard1ba53812022-12-27 17:32:58 +0100125 public function debug(string|\Stringable $message, array $context = []): void
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +0200126 {
127 $this->log(LogLevel::DEBUG, $message, $context);
128 }
129
130 /**
131 * Logs with an arbitrary level.
132 *
133 * @param mixed $level
Matthias Andreas Benkard1ba53812022-12-27 17:32:58 +0100134 * @param string|\Stringable $message
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +0200135 * @param array $context
136 *
137 * @return void
138 *
139 * @throws \Psr\Log\InvalidArgumentException
140 */
Matthias Andreas Benkard1ba53812022-12-27 17:32:58 +0100141 abstract public function log($level, string|\Stringable $message, array $context = []): void;
Matthias Andreas Benkard7b2a3a12021-08-16 10:57:25 +0200142}