Skip to content

Commit 2bb47d6

Browse files
committedFeb 28, 2025··
use a zero-sized GlobalLogger
Signed-off-by: tison <[email protected]>
1 parent cde2585 commit 2bb47d6

File tree

2 files changed

+25
-3
lines changed

2 files changed

+25
-3
lines changed
 

‎src/lib.rs

+23-1
Original file line numberDiff line numberDiff line change
@@ -1204,7 +1204,7 @@ pub trait Log: Sync + Send {
12041204
fn flush(&self);
12051205
}
12061206

1207-
// Just used as a dummy initial value for LOGGER
1207+
/// A dummy initial value for LOGGER.
12081208
struct NopLogger;
12091209

12101210
impl Log for NopLogger {
@@ -1216,6 +1216,28 @@ impl Log for NopLogger {
12161216
fn flush(&self) {}
12171217
}
12181218

1219+
/// The global logger proxy.
1220+
///
1221+
/// This zero-sized type implements the [`Log`] trait by forwarding calls
1222+
/// to the logger registered with the `set_boxed_logger` or `set_logger`
1223+
/// methods if there is one, or a nop logger as default.
1224+
#[derive(Copy, Clone, Default, Debug)]
1225+
pub struct GlobalLogger;
1226+
1227+
impl Log for GlobalLogger {
1228+
fn enabled(&self, metadata: &Metadata) -> bool {
1229+
logger().enabled(metadata)
1230+
}
1231+
1232+
fn log(&self, record: &Record) {
1233+
logger().log(record)
1234+
}
1235+
1236+
fn flush(&self) {
1237+
logger().flush()
1238+
}
1239+
}
1240+
12191241
impl<T> Log for &'_ T
12201242
where
12211243
T: ?Sized + Log,

‎src/macros.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ macro_rules! log {
6767

6868
// log!(target: "my_target", Level::Info, "a log event")
6969
(target: $target:expr, $lvl:expr, $($arg:tt)+) => ({
70-
$crate::log!(logger: $crate::logger(), target: $target, $lvl, $($arg)+)
70+
$crate::log!(logger: $crate::GlobalLogger, target: $target, $lvl, $($arg)+)
7171
});
7272

7373
// log!(Level::Info, "a log event")
@@ -318,7 +318,7 @@ macro_rules! log_enabled {
318318
});
319319

320320
(target: $target:expr, $lvl:expr) => ({
321-
$crate::log_enabled!(logger: $crate::logger(), target: $target, $lvl)
321+
$crate::log_enabled!(logger: $crate::GlobalLogger, target: $target, $lvl)
322322
});
323323

324324
($lvl:expr) => ({

0 commit comments

Comments
 (0)
Please sign in to comment.