77
88use crate :: chain:: { ChainSource , DEFAULT_ESPLORA_SERVER_URL } ;
99use crate :: config:: {
10- default_user_config, Config , EsploraSyncConfig , FilesystemLoggerConfig , DEFAULT_LOG_FILENAME ,
11- DEFAULT_LOG_LEVEL , WALLET_KEYS_SEED_LEN ,
10+ default_user_config, Config , EsploraSyncConfig , DEFAULT_LOG_FILE_PATH , DEFAULT_LOG_LEVEL ,
11+ DEFAULT_STORAGE_DIR_PATH , WALLET_KEYS_SEED_LEN ,
1212} ;
1313
1414use crate :: connection:: ConnectionManager ;
@@ -111,15 +111,30 @@ impl Default for LiquiditySourceConfig {
111111
112112#[ derive( Clone ) ]
113113enum LogWriterConfig {
114- File ( FilesystemLoggerConfig ) ,
114+ File {
115+ /// The log file path.
116+ ///
117+ /// This specifies the log file path if a destination other than the storage
118+ /// directory, i.e. [`Config::storage_dir_path`], is preferred. If unconfigured,
119+ /// defaults to [`DEFAULT_LOG_FILENAME`] in default storage directory.
120+ log_file_path : Option < String > ,
121+ /// This specifies the log level.
122+ ///
123+ /// If unconfigured, defaults to `Debug`.
124+ log_level : Option < LogLevel > ,
125+ } ,
115126 Log ( LogLevel ) ,
116127 Custom ( Arc < dyn LogWriter > ) ,
117128}
118129
119130impl std:: fmt:: Debug for LogWriterConfig {
120131 fn fmt ( & self , f : & mut std:: fmt:: Formatter < ' _ > ) -> std:: fmt:: Result {
121132 match self {
122- LogWriterConfig :: File ( config) => f. debug_tuple ( "File" ) . field ( config) . finish ( ) ,
133+ LogWriterConfig :: File { log_level, log_file_path } => f
134+ . debug_struct ( "LogWriterConfig" )
135+ . field ( "log_level" , log_level)
136+ . field ( "log_file_path" , log_file_path)
137+ . finish ( ) ,
123138 LogWriterConfig :: Log ( level) => f. debug_tuple ( "Log" ) . field ( level) . finish ( ) ,
124139 LogWriterConfig :: Custom ( _) => {
125140 f. debug_tuple ( "Custom" ) . field ( & "<config internal to custom log writer>" ) . finish ( )
@@ -130,7 +145,10 @@ impl std::fmt::Debug for LogWriterConfig {
130145
131146impl Default for LogWriterConfig {
132147 fn default ( ) -> Self {
133- Self :: File ( FilesystemLoggerConfig :: default ( ) )
148+ Self :: File {
149+ log_file_path : Some ( DEFAULT_LOG_FILE_PATH . to_string ( ) ) ,
150+ log_level : Some ( DEFAULT_LOG_LEVEL ) ,
151+ }
134152 }
135153}
136154
@@ -337,8 +355,7 @@ impl NodeBuilder {
337355 pub fn set_filesystem_logger (
338356 & mut self , log_file_path : Option < String > , log_level : Option < LogLevel > ,
339357 ) -> & mut Self {
340- self . log_writer_config =
341- Some ( LogWriterConfig :: File ( FilesystemLoggerConfig { log_file_path, log_level } ) ) ;
358+ self . log_writer_config = Some ( LogWriterConfig :: File { log_file_path, log_level } ) ;
342359 self
343360 }
344361
@@ -1310,11 +1327,11 @@ fn setup_logger(
13101327 if let Some ( conf) = log_writer_conf { conf } else { & default_lw_config } ;
13111328
13121329 let logger = match log_writer_config {
1313- LogWriterConfig :: File ( fs_logger_config ) => {
1314- let fp = format ! ( "{}/{}" , node_conf . storage_dir_path , DEFAULT_LOG_FILENAME ) ;
1315- let log_file_path =
1316- if let Some ( fp ) = & fs_logger_config . log_file_path { fp } else { & fp } ;
1317- let log_level = fs_logger_config . log_level . unwrap_or ( DEFAULT_LOG_LEVEL ) ;
1330+ LogWriterConfig :: File { log_file_path , log_level } => {
1331+ let fp = DEFAULT_LOG_FILE_PATH
1332+ . replace ( DEFAULT_STORAGE_DIR_PATH , & node_conf . storage_dir_path ) ;
1333+ let log_file_path = log_file_path. as_ref ( ) . map ( |p| p . as_str ( ) ) . unwrap_or ( & fp) ;
1334+ let log_level = log_level. unwrap_or ( DEFAULT_LOG_LEVEL ) ;
13181335
13191336 Logger :: new_fs_writer ( log_file_path, log_level)
13201337 . map_err ( |_| BuildError :: LoggerSetupFailed ) ?
0 commit comments