From: Jeffrey Czyz Date: Tue, 24 Aug 2021 04:55:28 +0000 (-0500) Subject: Expose log_bytes! macro for use in other crates X-Git-Tag: v0.0.103~8^2~8 X-Git-Url: http://git.bitcoin.ninja/?a=commitdiff_plain;h=a3a4e614276cbfe7c2fbb9eeb39d32982f1e6bb0;p=rust-lightning Expose log_bytes! macro for use in other crates Needed to log PaymentHash in the lightning-invoice crate when retrying payments. --- diff --git a/lightning/src/util/logger.rs b/lightning/src/util/logger.rs index b34d1f0b7..01b024065 100644 --- a/lightning/src/util/logger.rs +++ b/lightning/src/util/logger.rs @@ -120,6 +120,18 @@ pub trait Logger { fn log(&self, record: &Record); } +/// Wrapper for logging byte slices in hex format. +#[doc(hidden)] +pub struct DebugBytes<'a>(pub &'a [u8]); +impl<'a> core::fmt::Display for DebugBytes<'a> { + fn fmt(&self, f: &mut core::fmt::Formatter) -> Result<(), core::fmt::Error> { + for i in self.0 { + write!(f, "{:02x}", i)?; + } + Ok(()) + } +} + #[cfg(test)] mod tests { use util::logger::{Logger, Level}; diff --git a/lightning/src/util/macro_logger.rs b/lightning/src/util/macro_logger.rs index d7849d77a..788bc5eca 100644 --- a/lightning/src/util/macro_logger.rs +++ b/lightning/src/util/macro_logger.rs @@ -16,6 +16,7 @@ use bitcoin::secp256k1::key::PublicKey; use routing::router::Route; use ln::chan_utils::HTLCType; +use util::logger::DebugBytes; pub(crate) struct DebugPubKey<'a>(pub &'a PublicKey); impl<'a> core::fmt::Display for DebugPubKey<'a> { @@ -32,18 +33,11 @@ macro_rules! log_pubkey { } } -pub(crate) struct DebugBytes<'a>(pub &'a [u8]); -impl<'a> core::fmt::Display for DebugBytes<'a> { - fn fmt(&self, f: &mut core::fmt::Formatter) -> Result<(), core::fmt::Error> { - for i in self.0 { - write!(f, "{:02x}", i)?; - } - Ok(()) - } -} +/// Logs a byte slice in hex format. +#[macro_export] macro_rules! log_bytes { ($obj: expr) => { - ::util::macro_logger::DebugBytes(&$obj) + $crate::util::logger::DebugBytes(&$obj) } } @@ -157,6 +151,7 @@ macro_rules! log_spendable { /// Create a new Record and log it. You probably don't want to use this macro directly, /// but it needs to be exported so `log_trace` etc can use it in external crates. +#[doc(hidden)] #[macro_export] macro_rules! log_internal { ($logger: expr, $lvl:expr, $($arg:tt)+) => (