diff --git a/bridges/log/src/lib.rs b/bridges/log/src/lib.rs index 9df69f6..0b112e4 100644 --- a/bridges/log/src/lib.rs +++ b/bridges/log/src/lib.rs @@ -18,7 +18,6 @@ #![deny(missing_docs)] use std::ops::Deref; -use std::sync::Arc; use log::Metadata; use log::Record; @@ -29,18 +28,14 @@ use logforth_core::record::FilterCriteria; /// Adapter to use a `logforth` logger instance as a `log` crate logger. #[derive(Debug)] -pub struct LogAdapter(Arc); +pub struct LogAdapter { + logger: Logger, +} impl LogAdapter { /// Create a new `LogAdapter` instance. - pub fn new(logger: Arc) -> Self { - Self(logger) - } -} - -impl Clone for LogAdapter { - fn clone(&self) -> Self { - Self(self.0.clone()) + pub fn new(logger: Logger) -> Self { + Self { logger } } } @@ -48,54 +43,21 @@ impl Deref for LogAdapter { type Target = Logger; fn deref(&self) -> &Self::Target { - &self.0 + &self.logger } } impl log::Log for LogAdapter { fn enabled(&self, metadata: &Metadata) -> bool { - forward_enabled(&self.0, metadata) - } - - fn log(&self, record: &Record) { - forward_log(&self.0, record); - } - - fn flush(&self) { - self.0.flush(); - } -} - -/// Owned adapter to use a `logforth` logger instance as a `log` crate logger. -#[derive(Debug)] -pub struct OwnedLogAdapter(Logger); - -impl OwnedLogAdapter { - /// Create a new `OwnedLogAdapter` instance. - pub fn new(logger: Logger) -> Self { - Self(logger) - } -} - -impl Deref for OwnedLogAdapter { - type Target = Logger; - - fn deref(&self) -> &Self::Target { - &self.0 - } -} - -impl log::Log for OwnedLogAdapter { - fn enabled(&self, metadata: &Metadata) -> bool { - forward_enabled(&self.0, metadata) + forward_enabled(&self.logger, metadata) } fn log(&self, record: &Record) { - forward_log(&self.0, record); + forward_log(&self.logger, record); } fn flush(&self) { - self.0.flush(); + self.logger.flush(); } } diff --git a/examples/src/asynchronous.rs b/examples/src/asynchronous.rs index a2fa38c..9f69dd9 100644 --- a/examples/src/asynchronous.rs +++ b/examples/src/asynchronous.rs @@ -12,8 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::sync::Arc; - use logforth::append::asynchronous::AsyncBuilder; use logforth::append::file::FileBuilder; use logforth::bridge::log::LogAdapter; @@ -32,9 +30,8 @@ fn main() { let logger = logforth::core::builder() .dispatch(|d| d.filter(LevelFilter::All).append(asynchronous)) .build(); - let logger = LogAdapter::new(Arc::new(logger)); - log::set_boxed_logger(Box::new(logger.clone())).unwrap(); + log::set_boxed_logger(Box::new(LogAdapter::new(logger))).unwrap(); log::set_max_level(log::LevelFilter::Trace); log::error!("Hello single error!"); @@ -44,5 +41,5 @@ fn main() { log::trace!("Hello single trace!"); // ensure all async events buffered are written out - logger.flush(); + log::logger().flush(); } diff --git a/examples/src/log_with_logger.rs b/examples/src/log_with_logger.rs index 9755be4..16d2271 100644 --- a/examples/src/log_with_logger.rs +++ b/examples/src/log_with_logger.rs @@ -13,7 +13,7 @@ // limitations under the License. use logforth::append; -use logforth::bridge::log::OwnedLogAdapter; +use logforth::bridge::log::LogAdapter; fn main() { log::set_max_level(log::LevelFilter::Trace); @@ -22,7 +22,7 @@ fn main() { .dispatch(|d| d.append(append::Stdout::default())) .build(); - let l = OwnedLogAdapter::new(l); + let l = LogAdapter::new(l); log::error!(logger: l, "Hello error!"); log::warn!(logger: l, "Hello warn!"); log::info!(logger: l, "Hello info!"); diff --git a/logforth/src/starter_log.rs b/logforth/src/starter_log.rs index e3510e5..2dcfbc4 100644 --- a/logforth/src/starter_log.rs +++ b/logforth/src/starter_log.rs @@ -14,7 +14,7 @@ //! Starter configurations for quickly setting up logforth with the `log` crate -use logforth_bridge_log::OwnedLogAdapter; +use logforth_bridge_log::LogAdapter; use logforth_core::Logger; use crate::Append; @@ -89,7 +89,7 @@ impl LogStarterBuilder { pub fn try_apply(self) -> Result<(), Error> { let make_error = |_| Error::new("logging system has already been setup"); - let logger = Box::new(OwnedLogAdapter::new(self.build())); + let logger = Box::new(LogAdapter::new(self.build())); log::set_boxed_logger(logger).map_err(make_error)?; log::set_max_level(log::LevelFilter::Trace); @@ -134,7 +134,7 @@ impl LogStarterBuilder { /// use logforth::bridge::log::LogAdapter; /// /// let logger = logforth::starter_log::builder().build(); - /// let logger = LogAdapter::new(Arc::new(logger)); + /// let logger = Arc::new(LogAdapter::new(logger)); /// log::set_boxed_logger(Box::new(logger.clone())).unwrap(); /// log::set_max_level(log::LevelFilter::Trace); /// @@ -264,7 +264,7 @@ impl LogStarterTestingBuilder { /// use logforth::bridge::log::LogAdapter; /// /// let logger = logforth::starter_log::testing().build(); - /// let logger = LogAdapter::new(Arc::new(logger)); + /// let logger = Arc::new(LogAdapter::new(logger)); /// log::set_boxed_logger(Box::new(logger.clone())).unwrap(); /// log::set_max_level(log::LevelFilter::Trace); /// @@ -424,7 +424,7 @@ impl LogStarterStdStreamBuilder { /// use logforth::bridge::log::LogAdapter; /// /// let logger = logforth::starter_log::stdout().build(); - /// let logger = LogAdapter::new(Arc::new(logger)); + /// let logger = Arc::new(LogAdapter::new(logger)); /// log::set_boxed_logger(Box::new(logger.clone())).unwrap(); /// log::set_max_level(log::LevelFilter::Trace); ///