| //! Utilities for configuring the `env_logger` crate to emit `tracing` events. |
| |
| /// Extension trait to configure an `env_logger::Builder` to emit traces. |
| pub trait BuilderExt: crate::sealed::Sealed { |
| /// Configure the built `env_logger::Logger` to emit `tracing` events for |
| /// all consumed `log` records, rather than printing them to standard out. |
| /// |
| /// Note that this replaces any previously configured formatting. |
| fn emit_traces(&mut self) -> &mut Self; |
| } |
| |
| impl crate::sealed::Sealed for env_logger::Builder {} |
| |
| impl BuilderExt for env_logger::Builder { |
| fn emit_traces(&mut self) -> &mut Self { |
| self.format(|_, record| super::format_trace(record)) |
| } |
| } |
| |
| /// Attempts to initialize the global logger with an env logger configured to |
| /// emit `tracing` events. |
| /// |
| /// This should be called early in the execution of a Rust program. Any log |
| /// events that occur before initialization will be ignored. |
| /// |
| /// # Errors |
| /// |
| /// This function will fail if it is called more than once, or if another |
| /// library has already initialized a global logger. |
| pub fn try_init() -> Result<(), log::SetLoggerError> { |
| env_logger::Builder::from_default_env() |
| .emit_traces() |
| .try_init() |
| } |
| |
| /// Initializes the global logger with an env logger configured to |
| /// emit `tracing` events. |
| /// |
| /// This should be called early in the execution of a Rust program. Any log |
| /// events that occur before initialization will be ignored. |
| /// |
| /// # Panics |
| /// |
| /// This function will panic if it is called more than once, or if another |
| /// library has already initialized a global logger. |
| pub fn init() { |
| try_init() |
| .expect("tracing_log::env_logger::init should not be called after logger initialized"); |
| } |