mirror of
https://gitlab.computer.surgery/matrix/grapevine.git
synced 2025-12-17 15:51:23 +01:00
config options for log format and color usage
We want to be able to disable colors for complement logs (since they are likely to be opened in a text editor). There's no pressing need for alternative log formats, but I'm interested in whether the 'pretty' format will be easier for debugging. I chose to add 'log_*' options rather than making a separate 'log' section for now. There's been some discussion about trying to separate the tracing/logging stuff into more structured sections, but that can happen later.
This commit is contained in:
parent
4f041f9153
commit
a909e2079b
4 changed files with 46 additions and 4 deletions
|
|
@ -77,6 +77,10 @@ pub(crate) struct Config {
|
|||
pub(crate) trusted_servers: Vec<OwnedServerName>,
|
||||
#[serde(default = "default_log")]
|
||||
pub(crate) log: EnvFilterClone,
|
||||
#[serde(default = "true_fn")]
|
||||
pub(crate) log_colors: bool,
|
||||
#[serde(default)]
|
||||
pub(crate) log_format: LogFormat,
|
||||
#[serde(default)]
|
||||
pub(crate) turn_username: String,
|
||||
#[serde(default)]
|
||||
|
|
@ -110,6 +114,20 @@ pub(crate) enum ListenConfig {
|
|||
},
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Default, Debug, Deserialize)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub(crate) enum LogFormat {
|
||||
/// Use the [`tracing_subscriber::fmt::format::Pretty`] formatter
|
||||
Pretty,
|
||||
/// Use the [`tracing_subscriber::fmt::format::Full`] formatter
|
||||
#[default]
|
||||
Full,
|
||||
/// Use the [`tracing_subscriber::fmt::format::Compact`] formatter
|
||||
Compact,
|
||||
/// Use the [`tracing_subscriber::fmt::format::Json`] formatter
|
||||
Json,
|
||||
}
|
||||
|
||||
impl Display for ListenConfig {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
match self {
|
||||
|
|
|
|||
|
|
@ -23,7 +23,11 @@ use tokio::time::Instant;
|
|||
use tracing_flame::{FlameLayer, FlushGuard};
|
||||
use tracing_subscriber::{layer::SubscriberExt, EnvFilter, Layer, Registry};
|
||||
|
||||
use crate::{config::Config, error, utils::error::Result};
|
||||
use crate::{
|
||||
config::{Config, LogFormat},
|
||||
error,
|
||||
utils::error::Result,
|
||||
};
|
||||
|
||||
/// Globally accessible metrics state
|
||||
pub(crate) static METRICS: Lazy<Metrics> = Lazy::new(Metrics::new);
|
||||
|
|
@ -119,8 +123,15 @@ pub(crate) fn init(config: &Config) -> Result<Guard, error::Observability> {
|
|||
.transpose()?
|
||||
.unzip();
|
||||
|
||||
let fmt_layer = tracing_subscriber::fmt::Layer::new()
|
||||
.with_filter(EnvFilter::from(&config.log));
|
||||
let fmt_layer =
|
||||
tracing_subscriber::fmt::Layer::new().with_ansi(config.log_colors);
|
||||
let fmt_layer = match config.log_format {
|
||||
LogFormat::Pretty => fmt_layer.pretty().boxed(),
|
||||
LogFormat::Full => fmt_layer.boxed(),
|
||||
LogFormat::Compact => fmt_layer.compact().boxed(),
|
||||
LogFormat::Json => fmt_layer.json().boxed(),
|
||||
};
|
||||
let fmt_layer = fmt_layer.with_filter(EnvFilter::from(&config.log));
|
||||
|
||||
let subscriber = Registry::default()
|
||||
.with(jaeger_layer)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue