feat: allow logging output to file
This commit is contained in:
committed by
Greg Heartsfield
parent
73285683a3
commit
f4beb884b3
@@ -166,6 +166,13 @@ impl VerifiedUsers {
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
#[allow(unused)]
|
||||
pub struct Logging {
|
||||
pub folder_path: Option<String>,
|
||||
pub file_prefix: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||
#[allow(unused)]
|
||||
pub struct Settings {
|
||||
@@ -180,6 +187,7 @@ pub struct Settings {
|
||||
pub verified_users: VerifiedUsers,
|
||||
pub retention: Retention,
|
||||
pub options: Options,
|
||||
pub logging: Logging,
|
||||
}
|
||||
|
||||
impl Settings {
|
||||
@@ -320,6 +328,10 @@ impl Default for Settings {
|
||||
options: Options {
|
||||
reject_future_seconds: None, // Reject events in the future if defined
|
||||
},
|
||||
logging: Logging {
|
||||
folder_path: None,
|
||||
file_prefix: None,
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+25
-1
@@ -4,6 +4,8 @@ use console_subscriber::ConsoleLayer;
|
||||
use nostr_rs_relay::cli::CLIArgs;
|
||||
use nostr_rs_relay::config;
|
||||
use nostr_rs_relay::server::start_server;
|
||||
use tracing_appender::non_blocking::WorkerGuard;
|
||||
use tracing_subscriber::EnvFilter;
|
||||
use std::sync::mpsc as syncmpsc;
|
||||
use std::sync::mpsc::{Receiver as MpscReceiver, Sender as MpscSender};
|
||||
use std::thread;
|
||||
@@ -22,6 +24,8 @@ fn main() {
|
||||
// get config file name from args
|
||||
let config_file_arg = args.config;
|
||||
|
||||
let mut _log_guard: Option<WorkerGuard> = None;
|
||||
|
||||
// configure settings from the config file (defaults to config.toml)
|
||||
// replace default settings with those read from the config file
|
||||
let mut settings = config::Settings::new(&config_file_arg);
|
||||
@@ -32,7 +36,27 @@ fn main() {
|
||||
ConsoleLayer::builder().with_default_env().init();
|
||||
} else {
|
||||
// standard logging
|
||||
tracing_subscriber::fmt::try_init().unwrap();
|
||||
if let Some(path) = &settings.logging.folder_path {
|
||||
// write logs to a folder
|
||||
let prefix = match &settings.logging.file_prefix {
|
||||
Some(p) => p.as_str(),
|
||||
None => "relay",
|
||||
};
|
||||
let file_appender = tracing_appender::rolling::hourly(path, prefix);
|
||||
let (non_blocking, guard) = tracing_appender::non_blocking(file_appender);
|
||||
let filter = EnvFilter::from_default_env();
|
||||
// assign to a variable that is not dropped till the program ends
|
||||
_log_guard = Some(guard);
|
||||
|
||||
tracing_subscriber::fmt()
|
||||
.with_env_filter(filter)
|
||||
.with_writer(non_blocking)
|
||||
.try_init()
|
||||
.unwrap();
|
||||
} else {
|
||||
// write to stdout
|
||||
tracing_subscriber::fmt::try_init().unwrap();
|
||||
}
|
||||
}
|
||||
info!("Starting up from main");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user