summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2021-09-04 15:35:53 +0100
committerDaniel Silverstone <dsilvers@digital-scurf.org>2021-09-04 15:35:53 +0100
commit06444bbc95f59b9bd69d99cb9c666e6162b053b7 (patch)
treede6687b05d4c5013ba68730aba9206c82e7c8085 /src
parent385211d9104dd7bbd7431f33df90372ac6f3cd20 (diff)
downloadsubplot-06444bbc95f59b9bd69d99cb9c666e6162b053b7.tar.gz
tracing: Make formatting better and document
Signed-off-by: Daniel Silverstone <dsilvers@digital-scurf.org>
Diffstat (limited to 'src')
-rw-r--r--src/bin/subplot.rs48
1 files changed, 36 insertions, 12 deletions
diff --git a/src/bin/subplot.rs b/src/bin/subplot.rs
index 29ed25e..f4eb678 100644
--- a/src/bin/subplot.rs
+++ b/src/bin/subplot.rs
@@ -8,7 +8,7 @@ use structopt::StructOpt;
use subplot::{
generate_test_program, resource, template_spec, DataFile, Document, MarkupOpts, Style,
};
-use tracing::{event, span, Level};
+use tracing::{event, span, Level, Subscriber};
use std::convert::TryFrom;
use std::ffi::OsString;
@@ -439,6 +439,12 @@ fn real_main() {
}
}
+enum LogFormat {
+ Pretty,
+ OneLine,
+ Json,
+}
+
fn main() {
let filter = match tracing_subscriber::EnvFilter::try_from_env("SUBPLOT_LOG") {
Ok(f) => f,
@@ -452,13 +458,27 @@ fn main() {
}
}
};
- match std::env::var("SUBPLOT_TRACE_LOG").ok().as_deref() {
+ let format = match std::env::var("SUBPLOT_LOG_FORMAT")
+ .map(|v| v.to_ascii_lowercase())
+ .as_deref()
+ {
+ Err(_) | Ok("oneline") | Ok("default") => LogFormat::OneLine,
+ Ok("pretty") => LogFormat::Pretty,
+ Ok("json") => LogFormat::Json,
+ Ok(v) => {
+ eprintln!("Unknown log format: {:?}", v);
+ process::exit(1);
+ }
+ };
+ let subscriber = match std::env::var("SUBPLOT_LOG_FILE").ok().as_deref() {
None | Some("") | Some("-") => {
- let subscriber = tracing_subscriber::fmt()
- .with_env_filter(filter)
- .pretty()
- .finish();
- tracing::subscriber::with_default(subscriber, real_main);
+ let subscriber = tracing_subscriber::fmt().with_env_filter(filter);
+ let subscriber: Box<dyn Subscriber + Send + Sync + 'static> = match format {
+ LogFormat::OneLine => Box::new(subscriber.finish()),
+ LogFormat::Pretty => Box::new(subscriber.pretty().finish()),
+ LogFormat::Json => Box::new(subscriber.json().with_ansi(false).finish()),
+ };
+ subscriber
}
Some(fname) => {
let curdir = std::path::Component::CurDir;
@@ -472,10 +492,14 @@ fn main() {
let subscriber = tracing_subscriber::fmt()
.with_writer(non_blocking)
.with_env_filter(filter)
- .pretty()
- .with_ansi(false)
- .finish();
- tracing::subscriber::with_default(subscriber, real_main);
+ .with_ansi(false);
+ let subscriber: Box<dyn Subscriber + Send + Sync + 'static> = match format {
+ LogFormat::OneLine => Box::new(subscriber.finish()),
+ LogFormat::Pretty => Box::new(subscriber.pretty().finish()),
+ LogFormat::Json => Box::new(subscriber.json().finish()),
+ };
+ subscriber
}
- }
+ };
+ tracing::subscriber::with_default(subscriber, real_main);
}