Skip to content

Commit 82ffcbf

Browse files
committed
feat: forward logs to log facade
1 parent 05ffc55 commit 82ffcbf

File tree

6 files changed

+53
-2
lines changed

6 files changed

+53
-2
lines changed

Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ libc = "0.2"
7575
uniffi = { version = "0.27.3", features = ["build"], optional = true }
7676
serde = { version = "1.0.210", default-features = false, features = ["std", "derive"] }
7777
serde_json = { version = "1.0.128", default-features = false, features = ["std"] }
78+
log = { version = "0.4.22" }
7879

7980
vss-client = "0.3"
8081
prost = { version = "0.11.6", default-features = false}

bindings/ldk_node.udl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,10 @@ dictionary FilesystemLoggerConfig {
3939
LdkLevel level;
4040
};
4141

42+
dictionary LogFacadeLoggerConfig {
43+
LdkLevel level;
44+
};
45+
4246
interface Builder {
4347
constructor();
4448
[Name=from_config]
@@ -54,6 +58,7 @@ interface Builder {
5458
void set_liquidity_source_lsps2(SocketAddress address, PublicKey node_id, string? token);
5559
void set_storage_dir_path(string storage_dir_path);
5660
void set_filesystem_logger(FilesystemLoggerConfig fs_config);
61+
void set_log_facade_logger(LogFacadeLoggerConfig lf_config);
5762
void set_network(Network network);
5863
[Throws=BuildError]
5964
void set_listening_addresses(sequence<SocketAddress> listening_addresses);

src/builder.rs

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77

88
use crate::chain::{ChainSource, DEFAULT_ESPLORA_SERVER_URL};
99
use crate::config::{
10-
default_user_config, Config, EsploraSyncConfig, FilesystemLoggerConfig, WALLET_KEYS_SEED_LEN,
10+
default_user_config, Config, EsploraSyncConfig, FilesystemLoggerConfig, LogFacadeLoggerConfig,
11+
WALLET_KEYS_SEED_LEN,
1112
};
1213

1314
use crate::connection::ConnectionManager;
@@ -111,6 +112,7 @@ impl Default for LiquiditySourceConfig {
111112
#[derive(Debug)]
112113
enum LogWriterConfig {
113114
File(FilesystemLoggerConfig),
115+
Log(LogFacadeLoggerConfig),
114116
}
115117

116118
impl Default for LogWriterConfig {
@@ -320,6 +322,12 @@ impl NodeBuilder {
320322
self
321323
}
322324

325+
/// Configures the [`Node`] instance to write logs to the `log` facade.
326+
pub fn set_log_facade_logger(&mut self, lf_config: LogFacadeLoggerConfig) -> &mut Self {
327+
self.log_writer_config = Some(LogWriterConfig::Log(lf_config));
328+
self
329+
}
330+
323331
/// Sets the Bitcoin network used.
324332
pub fn set_network(&mut self, network: Network) -> &mut Self {
325333
self.config.network = network;
@@ -635,6 +643,11 @@ impl ArcedNodeBuilder {
635643
self.inner.write().unwrap().set_filesystem_logger(fs_config);
636644
}
637645

646+
/// Configures the [`Node`] instance to write logs to the `log` facade.
647+
pub fn set_log_facade_logger(&self, lf_config: LogFacadeLoggerConfig) {
648+
self.inner.write().unwrap().set_log_facade_logger(lf_config);
649+
}
650+
638651
/// Sets the Bitcoin network used.
639652
pub fn set_network(&self, network: Network) {
640653
self.inner.write().unwrap().set_network(network);
@@ -1257,6 +1270,10 @@ fn setup_logger(config: &LogWriterConfig) -> Result<Arc<Logger>, BuildError> {
12571270
.map_err(|_| BuildError::LoggerSetupFailed)?,
12581271
))
12591272
},
1273+
LogWriterConfig::Log(log_facade_logger_config) => Ok(Arc::new(
1274+
Logger::new_log_facade(log_facade_logger_config.level)
1275+
.map_err(|_| BuildError::LoggerSetupFailed)?,
1276+
)),
12601277
}
12611278
}
12621279

src/config.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -441,6 +441,13 @@ pub struct FilesystemLoggerConfig {
441441
pub level: LdkLevel,
442442
}
443443

444+
/// Configuration options for logging to the `log` facade.
445+
#[derive(Debug)]
446+
pub struct LogFacadeLoggerConfig {
447+
/// This specifies the log level.
448+
pub level: LdkLevel,
449+
}
450+
444451
impl Default for FilesystemLoggerConfig {
445452
fn default() -> Self {
446453
let log_file_path = format!("{}/{}", DEFAULT_STORAGE_DIR_PATH, DEFAULT_LOG_FILE_PATH);

src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ pub use event::Event;
110110

111111
pub use io::utils::generate_entropy_mnemonic;
112112

113-
pub use config::FilesystemLoggerConfig;
113+
pub use config::{FilesystemLoggerConfig, LogFacadeLoggerConfig};
114114
pub use logger::{LdkLevel, LogRecord, LogWriter};
115115

116116
#[cfg(feature = "uniffi")]

src/logger.rs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ pub(crate) use lightning::{log_bytes, log_debug, log_error, log_info, log_trace}
1111
pub use lightning::util::logger::Level as LdkLevel;
1212

1313
use chrono::Utc;
14+
use log::{debug, error, info, trace, warn};
1415

1516
use std::fs;
1617
use std::io::Write;
@@ -52,10 +53,16 @@ pub(crate) struct FilesystemLogger {
5253
level: LdkLevel,
5354
}
5455

56+
pub(crate) struct LogFacadeLogger {
57+
level: LdkLevel,
58+
}
59+
5560
/// Defines a writer for [`Logger`].
5661
pub(crate) enum Writer {
5762
/// Writes logs to the file system.
5863
FileWriter(FilesystemLogger),
64+
/// Fowards logs to the `log` facade.
65+
LogFacadeWriter(LogFacadeLogger),
5966
}
6067

6168
impl LogWriter for Writer {
@@ -84,6 +91,14 @@ impl LogWriter for Writer {
8491
.write_all(log.as_bytes())
8592
.expect("Failed to write to log file")
8693
},
94+
Writer::LogFacadeWriter(log_facade_logger) => match log_facade_logger.level {
95+
LdkLevel::Gossip => trace!("{}", log),
96+
LdkLevel::Trace => trace!("{}", log),
97+
LdkLevel::Debug => debug!("{}", log),
98+
LdkLevel::Info => info!("{}", log),
99+
LdkLevel::Warn => warn!("{}", log),
100+
LdkLevel::Error => error!("{}", log),
101+
},
87102
}
88103
}
89104
}
@@ -113,6 +128,12 @@ impl Logger {
113128

114129
Ok(Self { writer: Writer::FileWriter(fs_writer) })
115130
}
131+
132+
pub fn new_log_facade(level: LdkLevel) -> Result<Self, ()> {
133+
let log_facade_writer = LogFacadeLogger { level };
134+
135+
Ok(Self { writer: Writer::LogFacadeWriter(log_facade_writer) })
136+
}
116137
}
117138

118139
impl LdkLogger for Logger {

0 commit comments

Comments
 (0)