don't write to stdout when already writing to file with file logs by default
This commit is contained in:
parent
6610176f4b
commit
acac35dbe3
1 changed files with 57 additions and 30 deletions
87
src/main.rs
87
src/main.rs
|
|
@ -116,15 +116,25 @@ struct Args {
|
|||
#[arg(long, default_value = "waveform")]
|
||||
name: String,
|
||||
|
||||
#[arg(short = 'a', long = "apath")]
|
||||
#[arg(
|
||||
short = 'a',
|
||||
long = "apath",
|
||||
help = "Write app logs to specified file instead of stdout"
|
||||
)]
|
||||
app_logs_path: Option<String>,
|
||||
|
||||
#[arg(short = 's', long = "spath")]
|
||||
#[arg(short = 's', long = "spath", help = "Path to file with stats")]
|
||||
stat_logs_path: Option<String>,
|
||||
|
||||
#[arg(short = 'w', long, help = "Not saving wavs if isn't set")]
|
||||
wavs_path: Option<String>,
|
||||
|
||||
#[arg(
|
||||
long,
|
||||
help = "Write logs to stdout even when app_logs_path is specified"
|
||||
)]
|
||||
force_stdout: bool,
|
||||
|
||||
#[arg(short, long, action = clap::ArgAction::Count)]
|
||||
verbose: u8,
|
||||
}
|
||||
|
|
@ -133,6 +143,7 @@ fn init_logger(
|
|||
verbosity: u8,
|
||||
app_log_path: Option<&Path>,
|
||||
stat_log_path: Option<&Path>,
|
||||
force_stdout: bool,
|
||||
) -> Result<(), fern::InitError> {
|
||||
let log_level = match verbosity {
|
||||
0 => LevelFilter::Info,
|
||||
|
|
@ -180,33 +191,44 @@ fn init_logger(
|
|||
.chain(fern::log_file(path).unwrap())
|
||||
});
|
||||
|
||||
let stdout_dispatch = Dispatch::new()
|
||||
.format(|out, message, record| {
|
||||
let now = Local::now();
|
||||
let message = message.to_string();
|
||||
let level = match record.level() {
|
||||
Level::Error => "ERROR".red().to_string(),
|
||||
Level::Warn => "WARN".yellow().to_string(),
|
||||
Level::Info => "INFO".green().to_string(),
|
||||
Level::Debug => "DEBUG".blue().to_string(),
|
||||
Level::Trace => "TRACE".purple().to_string(),
|
||||
};
|
||||
out.finish(format_args!(
|
||||
"{} [{}] - {}",
|
||||
now.format(time_format_string),
|
||||
level,
|
||||
if record.target() == "stats10min" {
|
||||
Stats10Min::nice_log_format(&message)
|
||||
.expect("Couldn't get nice string for 10-min stats!")
|
||||
} else {
|
||||
message
|
||||
}
|
||||
))
|
||||
})
|
||||
.level(log_level)
|
||||
.chain(std::io::stdout());
|
||||
let stdout_dispatch = if app_dispatch.is_none() || force_stdout {
|
||||
Some(
|
||||
Dispatch::new()
|
||||
.format(|out, message, record| {
|
||||
let now = Local::now();
|
||||
let message = message.to_string();
|
||||
let level = match record.level() {
|
||||
Level::Error => "ERROR".red().to_string(),
|
||||
Level::Warn => "WARN".yellow().to_string(),
|
||||
Level::Info => "INFO".green().to_string(),
|
||||
Level::Debug => "DEBUG".blue().to_string(),
|
||||
Level::Trace => "TRACE".purple().to_string(),
|
||||
};
|
||||
out.finish(format_args!(
|
||||
"{} [{}] - {}",
|
||||
now.format(time_format_string),
|
||||
level,
|
||||
if record.target() == "stats10min" {
|
||||
Stats10Min::nice_log_format(&message)
|
||||
.expect("Couldn't get nice string for 10-min stats!")
|
||||
} else {
|
||||
message
|
||||
}
|
||||
))
|
||||
})
|
||||
.level(log_level)
|
||||
.chain(std::io::stdout()),
|
||||
)
|
||||
} else {
|
||||
None
|
||||
};
|
||||
|
||||
let root_dispatch = Dispatch::new().chain(stdout_dispatch);
|
||||
let root_dispatch = Dispatch::new();
|
||||
|
||||
let root_dispatch = match stdout_dispatch {
|
||||
Some(dispatch) => root_dispatch.chain(dispatch),
|
||||
None => root_dispatch,
|
||||
};
|
||||
let root_dispatch = match stat_dispatch {
|
||||
Some(dispatch) => root_dispatch.chain(dispatch),
|
||||
None => root_dispatch,
|
||||
|
|
@ -225,8 +247,13 @@ fn main() {
|
|||
let args = Args::parse();
|
||||
let app_logs_path = args.app_logs_path.as_deref().map(Path::new);
|
||||
let stat_logs_path = args.stat_logs_path.as_deref().map(Path::new);
|
||||
init_logger(args.verbose, app_logs_path, stat_logs_path)
|
||||
.expect("Failed to initialize the logger");
|
||||
init_logger(
|
||||
args.verbose,
|
||||
app_logs_path,
|
||||
stat_logs_path,
|
||||
args.force_stdout,
|
||||
)
|
||||
.expect("Failed to initialize the logger");
|
||||
|
||||
assert!(
|
||||
args.request_rate >= 1 && args.request_rate <= 100,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue