Darktide Mod Manager #39
2 changed files with 18 additions and 33 deletions
|
@ -7,10 +7,6 @@ use tracing_subscriber::layer::SubscriberExt;
|
||||||
use tracing_subscriber::prelude::*;
|
use tracing_subscriber::prelude::*;
|
||||||
use tracing_subscriber::EnvFilter;
|
use tracing_subscriber::EnvFilter;
|
||||||
|
|
||||||
// I currently cannot find a way to add a parameter to `dtmt_shared::create_tracing_subscriber`
|
|
||||||
// that would allow me to pass an extra `Layer` to that function. So, for now,
|
|
||||||
// its code has to be duplicated here.
|
|
||||||
|
|
||||||
pub struct ChannelWriter {
|
pub struct ChannelWriter {
|
||||||
tx: UnboundedSender<String>,
|
tx: UnboundedSender<String>,
|
||||||
}
|
}
|
||||||
|
@ -39,42 +35,31 @@ impl std::io::Write for ChannelWriter {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn create_tracing_subscriber(tx: UnboundedSender<String>) {
|
pub fn create_tracing_subscriber(tx: UnboundedSender<String>) {
|
||||||
let env_layer =
|
let env_layer = if cfg!(debug_assertions) {
|
||||||
EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::try_new("info").unwrap());
|
EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new("info"))
|
||||||
|
|
||||||
let (dev_stdout_layer, prod_stdout_layer, filter_layer) = if cfg!(debug_assertions) {
|
|
||||||
let fmt_layer = fmt::layer().pretty();
|
|
||||||
(Some(fmt_layer), None, None)
|
|
||||||
} else {
|
} else {
|
||||||
// Creates a layer that
|
EnvFilter::new("error,dtmm=info")
|
||||||
// - only prints events that contain a message
|
};
|
||||||
// - does not print fields
|
|
||||||
// - does not print spans/targets
|
|
||||||
// - only prints time, not date
|
|
||||||
let fmt_layer = fmt::layer()
|
|
||||||
.event_format(dtmt_shared::Formatter)
|
|
||||||
.fmt_fields(debug_fn(dtmt_shared::format_field));
|
|
||||||
|
|
||||||
(
|
let stdout_layer = if cfg!(debug_assertions) {
|
||||||
None,
|
let layer = fmt::layer().pretty();
|
||||||
Some(fmt_layer),
|
Some(layer)
|
||||||
Some(FilterFn::new(dtmt_shared::filter)),
|
} else {
|
||||||
)
|
None
|
||||||
};
|
};
|
||||||
|
|
||||||
let channel_layer = fmt::layer()
|
let channel_layer = fmt::layer()
|
||||||
// TODO: Re-enable and implement a formatter for the Druid widget
|
// TODO: Re-enable and implement a formatter for the Druid widget
|
||||||
.with_ansi(false)
|
.with_ansi(false)
|
||||||
.event_format(dtmt_shared::Formatter)
|
.event_format(dtmt_shared::Formatter)
|
||||||
.fmt_fields(debug_fn(dtmt_shared::format_field))
|
.fmt_fields(debug_fn(dtmt_shared::format_fields))
|
||||||
.with_writer(move || ChannelWriter::new(tx.clone()));
|
.with_writer(move || ChannelWriter::new(tx.clone()))
|
||||||
|
.with_filter(FilterFn::new(dtmt_shared::filter_fields));
|
||||||
|
|
||||||
tracing_subscriber::registry()
|
tracing_subscriber::registry()
|
||||||
.with(channel_layer)
|
|
||||||
.with(filter_layer)
|
|
||||||
.with(env_layer)
|
.with(env_layer)
|
||||||
.with(dev_stdout_layer)
|
.with(channel_layer)
|
||||||
.with(prod_stdout_layer)
|
.with(stdout_layer)
|
||||||
.with(ErrorLayer::new(fmt::format::Pretty::default()))
|
.with(ErrorLayer::new(fmt::format::Pretty::default()))
|
||||||
.init();
|
.init();
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ use tracing_subscriber::EnvFilter;
|
||||||
|
|
||||||
pub const TIME_FORMAT: &[FormatItem] = format_description!("[hour]:[minute]:[second]");
|
pub const TIME_FORMAT: &[FormatItem] = format_description!("[hour]:[minute]:[second]");
|
||||||
|
|
||||||
pub fn format_field(w: &mut Writer<'_>, field: &Field, val: &dyn std::fmt::Debug) -> Result {
|
pub fn format_fields(w: &mut Writer<'_>, field: &Field, val: &dyn std::fmt::Debug) -> Result {
|
||||||
if field.name() == "message" {
|
if field.name() == "message" {
|
||||||
write!(w, "{:?}", val)
|
write!(w, "{:?}", val)
|
||||||
} else {
|
} else {
|
||||||
|
@ -24,7 +24,7 @@ pub fn format_field(w: &mut Writer<'_>, field: &Field, val: &dyn std::fmt::Debug
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn filter(metadata: &Metadata<'_>) -> bool {
|
pub fn filter_fields(metadata: &Metadata<'_>) -> bool {
|
||||||
metadata
|
metadata
|
||||||
.fields()
|
.fields()
|
||||||
.iter()
|
.iter()
|
||||||
|
@ -72,9 +72,9 @@ pub fn create_tracing_subscriber() {
|
||||||
// - only prints time, not date
|
// - only prints time, not date
|
||||||
let fmt_layer = fmt::layer()
|
let fmt_layer = fmt::layer()
|
||||||
.event_format(Formatter)
|
.event_format(Formatter)
|
||||||
.fmt_fields(debug_fn(format_field));
|
.fmt_fields(debug_fn(format_fields));
|
||||||
|
|
||||||
(None, Some(fmt_layer), Some(FilterFn::new(filter)))
|
(None, Some(fmt_layer), Some(FilterFn::new(filter_fields)))
|
||||||
};
|
};
|
||||||
|
|
||||||
tracing_subscriber::registry()
|
tracing_subscriber::registry()
|
||||||
|
|
Loading…
Add table
Reference in a new issue