|
13 | 13 | /// This macro will generically log with the specified `Level` and `format!`
|
14 | 14 | /// based argument list.
|
15 | 15 | ///
|
16 |
| -/// # Examples |
17 |
| -/// |
18 | 16 | /// ```
|
19 | 17 | /// use log::{log, Level};
|
20 | 18 | ///
|
21 |
| -/// # fn main() { |
22 | 19 | /// let data = (42, "Forty-two");
|
23 | 20 | /// let private_data = "private";
|
24 | 21 | ///
|
25 | 22 | /// log!(Level::Error, "Received errors: {}, {}", data.0, data.1);
|
26 |
| -/// log!(target: "app_events", Level::Warn, "App warning: {}, {}, {}", |
27 |
| -/// data.0, data.1, private_data); |
28 |
| -/// # } |
29 | 23 | /// ```
|
| 24 | +/// |
| 25 | +/// Optionally, you can specify a `target` argument to attach a specific target |
| 26 | +/// to the log record. By default, the target is the module path of the caller. |
| 27 | +/// |
| 28 | +/// ``` |
| 29 | +/// use log::{log, Level}; |
| 30 | +/// |
| 31 | +/// let data = (42, "Forty-two"); |
| 32 | +/// let private_data = "private"; |
| 33 | +/// |
| 34 | +/// log!( |
| 35 | +/// target: "app_events", |
| 36 | +/// Level::Error, |
| 37 | +/// "Received errors: {}, {}", |
| 38 | +/// data.0, data.1 |
| 39 | +/// ); |
| 40 | +/// ``` |
| 41 | +/// |
| 42 | +/// And optionally, you can specify a `logger` argument to use a specific logger |
| 43 | +/// instead of the default global logger. |
| 44 | +/// |
| 45 | +/// ``` |
| 46 | +/// # struct MyLogger {} |
| 47 | +/// # impl Log for MyLogger { |
| 48 | +/// # fn enabled(&self, _metadata: &log::Metadata) -> bool { |
| 49 | +/// # false |
| 50 | +/// # } |
| 51 | +/// # fn log(&self, _record: &log::Record) {} |
| 52 | +/// # fn flush(&self) {} |
| 53 | +/// # } |
| 54 | +/// use log::{log, Level, Log}; |
| 55 | +/// |
| 56 | +/// let data = (42, "Forty-two"); |
| 57 | +/// let private_data = "private"; |
| 58 | +/// |
| 59 | +/// let my_logger = MyLogger {}; |
| 60 | +/// log!( |
| 61 | +/// logger: &my_logger, |
| 62 | +/// Level::Error, |
| 63 | +/// "Received errors: {}, {}", |
| 64 | +/// data.0, data.1 |
| 65 | +/// ); |
30 | 66 | #[macro_export]
|
31 | 67 | #[clippy::format_args]
|
32 | 68 | macro_rules! log {
|
@@ -81,14 +117,14 @@ macro_rules! log {
|
81 | 117 | /// # Examples
|
82 | 118 | ///
|
83 | 119 | /// ```
|
84 |
| -/// use log::error; |
| 120 | +/// use log::{error, GlobalLogger}; |
85 | 121 | ///
|
86 |
| -/// # fn main() { |
87 | 122 | /// let (err_info, port) = ("No connection", 22);
|
| 123 | +/// let my_logger = GlobalLogger; // can be any logger implementing the Log trait |
88 | 124 | ///
|
89 | 125 | /// error!("Error: {err_info} on port {port}");
|
90 | 126 | /// error!(target: "app_events", "App Error: {err_info}, Port: {port}");
|
91 |
| -/// # } |
| 127 | +/// error!(logger: my_logger, "App Error: {err_info}, Port: {port}"); |
92 | 128 | /// ```
|
93 | 129 | #[macro_export]
|
94 | 130 | #[clippy::format_args]
|
@@ -120,14 +156,14 @@ macro_rules! error {
|
120 | 156 | /// # Examples
|
121 | 157 | ///
|
122 | 158 | /// ```
|
123 |
| -/// use log::warn; |
| 159 | +/// use log::{warn, GlobalLogger}; |
124 | 160 | ///
|
125 |
| -/// # fn main() { |
126 | 161 | /// let warn_description = "Invalid Input";
|
| 162 | +/// let my_logger = GlobalLogger; // can be any logger implementing the Log trait |
127 | 163 | ///
|
128 | 164 | /// warn!("Warning! {warn_description}!");
|
129 | 165 | /// warn!(target: "input_events", "App received warning: {warn_description}");
|
130 |
| -/// # } |
| 166 | +/// warn!(logger: my_logger, "App received warning: {warn_description}"); |
131 | 167 | /// ```
|
132 | 168 | #[macro_export]
|
133 | 169 | #[clippy::format_args]
|
@@ -159,16 +195,23 @@ macro_rules! warn {
|
159 | 195 | /// # Examples
|
160 | 196 | ///
|
161 | 197 | /// ```
|
162 |
| -/// use log::info; |
| 198 | +/// use log::{info, GlobalLogger}; |
163 | 199 | ///
|
164 |
| -/// # fn main() { |
165 | 200 | /// # struct Connection { port: u32, speed: f32 }
|
166 | 201 | /// let conn_info = Connection { port: 40, speed: 3.20 };
|
| 202 | +/// let my_logger = GlobalLogger; // can be any logger implementing the Log trait |
167 | 203 | ///
|
168 | 204 | /// info!("Connected to port {} at {} Mb/s", conn_info.port, conn_info.speed);
|
169 |
| -/// info!(target: "connection_events", "Successful connection, port: {}, speed: {}", |
170 |
| -/// conn_info.port, conn_info.speed); |
171 |
| -/// # } |
| 205 | +/// info!( |
| 206 | +/// target: "connection_events", |
| 207 | +/// "Successful connection, port: {}, speed: {}", |
| 208 | +/// conn_info.port, conn_info.speed |
| 209 | +/// ); |
| 210 | +/// info!( |
| 211 | +/// logger: my_logger, |
| 212 | +/// "Successful connection, port: {}, speed: {}", |
| 213 | +/// conn_info.port, conn_info.speed |
| 214 | +/// ); |
172 | 215 | /// ```
|
173 | 216 | #[macro_export]
|
174 | 217 | #[clippy::format_args]
|
@@ -200,15 +243,15 @@ macro_rules! info {
|
200 | 243 | /// # Examples
|
201 | 244 | ///
|
202 | 245 | /// ```
|
203 |
| -/// use log::debug; |
| 246 | +/// use log::{debug, GlobalLogger}; |
204 | 247 | ///
|
205 |
| -/// # fn main() { |
206 | 248 | /// # struct Position { x: f32, y: f32 }
|
207 | 249 | /// let pos = Position { x: 3.234, y: -1.223 };
|
| 250 | +/// let my_logger = GlobalLogger; // can be any logger implementing the Log trait |
208 | 251 | ///
|
209 | 252 | /// debug!("New position: x: {}, y: {}", pos.x, pos.y);
|
210 | 253 | /// debug!(target: "app_events", "New position: x: {}, y: {}", pos.x, pos.y);
|
211 |
| -/// # } |
| 254 | +/// debug!(logger: my_logger, "New position: x: {}, y: {}", pos.x, pos.y); |
212 | 255 | /// ```
|
213 | 256 | #[macro_export]
|
214 | 257 | #[clippy::format_args]
|
@@ -240,17 +283,19 @@ macro_rules! debug {
|
240 | 283 | /// # Examples
|
241 | 284 | ///
|
242 | 285 | /// ```
|
243 |
| -/// use log::trace; |
| 286 | +/// use log::{trace, GlobalLogger}; |
244 | 287 | ///
|
245 |
| -/// # fn main() { |
246 | 288 | /// # struct Position { x: f32, y: f32 }
|
247 | 289 | /// let pos = Position { x: 3.234, y: -1.223 };
|
| 290 | +/// let my_logger = GlobalLogger; // can be any logger implementing the Log trait |
248 | 291 | ///
|
249 | 292 | /// trace!("Position is: x: {}, y: {}", pos.x, pos.y);
|
250 | 293 | /// trace!(target: "app_events", "x is {} and y is {}",
|
251 | 294 | /// if pos.x >= 0.0 { "positive" } else { "negative" },
|
252 | 295 | /// if pos.y >= 0.0 { "positive" } else { "negative" });
|
253 |
| -/// # } |
| 296 | +/// trace!(logger: my_logger, "x is {} and y is {}", |
| 297 | +/// if pos.x >= 0.0 { "positive" } else { "negative" }, |
| 298 | +/// if pos.y >= 0.0 { "positive" } else { "negative" }); |
254 | 299 | /// ```
|
255 | 300 | #[macro_export]
|
256 | 301 | #[clippy::format_args]
|
|
0 commit comments