diff --git a/src/cmd_args.rs b/src/cmd_args.rs index 08782f47..3989d670 100644 --- a/src/cmd_args.rs +++ b/src/cmd_args.rs @@ -13,6 +13,15 @@ pub struct Args { #[clap(short='F', long, value_enum, default_value_t=LogFormat::Text, env)] pub log_format: LogFormat, + + #[arg( + short, + long, + default_value_t = false, + env, + help = "disable colors in the log output" + )] + pub no_color: bool, } pub fn parse() -> Args { diff --git a/src/lib.rs b/src/lib.rs index a0a71ebb..6a8a1e36 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -6,6 +6,7 @@ pub mod config; pub mod constants; pub mod dns_cache; pub mod errors; +pub mod logger; pub mod messages; pub mod mirrors; pub mod plugins; diff --git a/src/logger.rs b/src/logger.rs new file mode 100644 index 00000000..c3536a0c --- /dev/null +++ b/src/logger.rs @@ -0,0 +1,14 @@ +use crate::cmd_args::{Args, LogFormat}; +use tracing_subscriber; + +pub fn init(args: &Args) { + let trace_sub = tracing_subscriber::fmt() + .with_max_level(args.log_level) + .with_ansi(!args.no_color); + + match args.log_format { + LogFormat::Structured => trace_sub.json().init(), + LogFormat::Debug => trace_sub.pretty().init(), + _ => trace_sub.init(), + }; +} diff --git a/src/main.rs b/src/main.rs index a6b3aab2..916d1a8e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -62,30 +62,17 @@ use std::sync::Arc; use tokio::sync::broadcast; use pgcat::cmd_args; -use pgcat::cmd_args::LogFormat; use pgcat::config::{get_config, reload_config, VERSION}; use pgcat::dns_cache; +use pgcat::logger; use pgcat::messages::configure_socket; use pgcat::pool::{ClientServerMap, ConnectionPool}; use pgcat::prometheus::start_metric_server; use pgcat::stats::{Collector, Reporter, REPORTER}; -use tracing_subscriber; fn main() -> Result<(), Box> { let args = cmd_args::parse(); - match args.log_format { - LogFormat::Structured => tracing_subscriber::fmt() - .json() - .with_max_level(args.log_level) - .init(), - LogFormat::Debug => tracing_subscriber::fmt() - .pretty() - .with_max_level(args.log_level) - .init(), - _ => tracing_subscriber::fmt() - .with_max_level(args.log_level) - .init(), - }; + logger::init(&args); info!("Welcome to PgCat! Meow. (Version {})", VERSION);