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::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 {
|
||||
tx: UnboundedSender<String>,
|
||||
}
|
||||
|
@ -39,42 +35,31 @@ impl std::io::Write for ChannelWriter {
|
|||
}
|
||||
|
||||
pub fn create_tracing_subscriber(tx: UnboundedSender<String>) {
|
||||
let env_layer =
|
||||
EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::try_new("info").unwrap());
|
||||
|
||||
let (dev_stdout_layer, prod_stdout_layer, filter_layer) = if cfg!(debug_assertions) {
|
||||
let fmt_layer = fmt::layer().pretty();
|
||||
(Some(fmt_layer), None, None)
|
||||
let env_layer = if cfg!(debug_assertions) {
|
||||
EnvFilter::try_from_default_env().unwrap_or_else(|_| EnvFilter::new("info"))
|
||||
} else {
|
||||
// Creates a layer that
|
||||
// - 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));
|
||||
EnvFilter::new("error,dtmm=info")
|
||||
};
|
||||
|
||||
(
|
||||
None,
|
||||
Some(fmt_layer),
|
||||
Some(FilterFn::new(dtmt_shared::filter)),
|
||||
)
|
||||
let stdout_layer = if cfg!(debug_assertions) {
|
||||
let layer = fmt::layer().pretty();
|
||||
Some(layer)
|
||||
} else {
|
||||
None
|
||||
};
|
||||
|
||||
let channel_layer = fmt::layer()
|
||||
// TODO: Re-enable and implement a formatter for the Druid widget
|
||||
.with_ansi(false)
|
||||
.event_format(dtmt_shared::Formatter)
|
||||
.fmt_fields(debug_fn(dtmt_shared::format_field))
|
||||
.with_writer(move || ChannelWriter::new(tx.clone()));
|
||||
.fmt_fields(debug_fn(dtmt_shared::format_fields))
|
||||
.with_writer(move || ChannelWriter::new(tx.clone()))
|
||||
.with_filter(FilterFn::new(dtmt_shared::filter_fields));
|
||||
|
||||
tracing_subscriber::registry()
|
||||
.with(channel_layer)
|
||||
.with(filter_layer)
|
||||
.with(env_layer)
|
||||
.with(dev_stdout_layer)
|
||||
.with(prod_stdout_layer)
|
||||
.with(channel_layer)
|
||||
.with(stdout_layer)
|
||||
.with(ErrorLayer::new(fmt::format::Pretty::default()))
|
||||
.init();
|
||||
}
|
||||
|
|
|
@ -16,7 +16,7 @@ use tracing_subscriber::EnvFilter;
|
|||
|
||||
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" {
|
||||
write!(w, "{:?}", val)
|
||||
} 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
|
||||
.fields()
|
||||
.iter()
|
||||
|
@ -72,9 +72,9 @@ pub fn create_tracing_subscriber() {
|
|||
// - only prints time, not date
|
||||
let fmt_layer = fmt::layer()
|
||||
.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()
|
||||
|
|
Loading…
Add table
Reference in a new issue