Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 9 additions & 47 deletions bridges/log/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
#![deny(missing_docs)]

use std::ops::Deref;
use std::sync::Arc;

use log::Metadata;
use log::Record;
Expand All @@ -29,73 +28,36 @@ use logforth_core::record::FilterCriteria;

/// Adapter to use a `logforth` logger instance as a `log` crate logger.
#[derive(Debug)]
pub struct LogAdapter(Arc<Logger>);
pub struct LogAdapter {
logger: Logger,
}

impl LogAdapter {
/// Create a new `LogAdapter` instance.
pub fn new(logger: Arc<Logger>) -> Self {
Self(logger)
}
}

impl Clone for LogAdapter {
fn clone(&self) -> Self {
Self(self.0.clone())
pub fn new(logger: Logger) -> Self {
Self { logger }
}
}

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();
}
}

Expand Down
7 changes: 2 additions & 5 deletions examples/src/asynchronous.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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!");
Expand All @@ -44,5 +41,5 @@ fn main() {
log::trace!("Hello single trace!");

// ensure all async events buffered are written out
logger.flush();
log::logger().flush();
}
4 changes: 2 additions & 2 deletions examples/src/log_with_logger.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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!");
Expand Down
10 changes: 5 additions & 5 deletions logforth/src/starter_log.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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);

Expand Down Expand Up @@ -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);
///
Expand Down Expand Up @@ -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);
///
Expand Down Expand Up @@ -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);
///
Expand Down