From 81a8ee0c19848db17f35c7a20575929332b880b1 Mon Sep 17 00:00:00 2001 From: Ben Wallis Date: Sun, 6 Dec 2020 14:41:59 +0000 Subject: [PATCH] Changed logging to use termcolor crate to fix ansi control codes showing when run under Windows Command Prompt --- Cargo.lock | 11 +++++++++++ server-cli/Cargo.toml | 1 + server-cli/src/logging.rs | 3 ++- voxygen/Cargo.toml | 1 + voxygen/src/logging.rs | 4 +++- 5 files changed, 18 insertions(+), 2 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ea3c4133e6..017a5d6d0f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4714,6 +4714,15 @@ dependencies = [ "xattr", ] +[[package]] +name = "termcolor" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4" +dependencies = [ + "winapi-util", +] + [[package]] name = "textwrap" version = "0.11.0" @@ -5441,6 +5450,7 @@ dependencies = [ "ron", "serde", "signal-hook", + "termcolor", "tracing", "tracing-subscriber", "tracing-tracy", @@ -5495,6 +5505,7 @@ dependencies = [ "serde", "specs", "specs-idvs", + "termcolor", "tracing", "tracing-appender", "tracing-log", diff --git a/server-cli/Cargo.toml b/server-cli/Cargo.toml index 9c2289754b..b5fdae92f2 100644 --- a/server-cli/Cargo.toml +++ b/server-cli/Cargo.toml @@ -18,6 +18,7 @@ clap = "2.33" crossterm = "0.17" lazy_static = "1" signal-hook = "0.1.16" +termcolor = "1.1" tracing = { version = "0.1", default-features = false } tracing-subscriber = { version = "0.2.3", default-features = false, features = ["env-filter", "fmt", "chrono", "ansi", "smallvec"] } ron = {version = "0.6", default-features = false} diff --git a/server-cli/src/logging.rs b/server-cli/src/logging.rs index 8b3980c7b3..394400296f 100644 --- a/server-cli/src/logging.rs +++ b/server-cli/src/logging.rs @@ -1,4 +1,5 @@ use crate::tuilog::TuiLog; +use termcolor::{ColorChoice, StandardStream}; use tracing::Level; use tracing_subscriber::{filter::LevelFilter, EnvFilter, FmtSubscriber}; #[cfg(feature = "tracy")] @@ -55,7 +56,7 @@ pub fn init(basic: bool) { .with_env_filter(filter); if basic { - subscriber.init(); + subscriber.with_writer(|| StandardStream::stdout(ColorChoice::Auto)).init(); } else { subscriber.with_writer(|| LOG.clone()).init(); } diff --git a/voxygen/Cargo.toml b/voxygen/Cargo.toml index 02017ee2ae..f31bf92c4b 100644 --- a/voxygen/Cargo.toml +++ b/voxygen/Cargo.toml @@ -90,6 +90,7 @@ itertools = "0.9.0" tracing-tracy = { version = "0.3.0", optional = true } # Logging +termcolor = "1.1" tracing = "0.1" tracing-appender = "0.1" tracing-log = "0.1.1" diff --git a/voxygen/src/logging.rs b/voxygen/src/logging.rs index 5677293060..e0b4a962df 100644 --- a/voxygen/src/logging.rs +++ b/voxygen/src/logging.rs @@ -2,6 +2,7 @@ use std::fs; use crate::settings::Settings; +use termcolor::{ColorChoice, StandardStream}; use tracing::{debug, error, info, trace}; use tracing_subscriber::{filter::LevelFilter, prelude::*, registry, EnvFilter}; @@ -71,7 +72,8 @@ pub fn init(settings: &Settings) -> Vec { let filter = base_exceptions(EnvFilter::new("")).add_directive(LevelFilter::TRACE.into()); // Create the terminal writer layer. - let (non_blocking, _stdio_guard) = tracing_appender::non_blocking(std::io::stdout()); + let (non_blocking, _stdio_guard) = + tracing_appender::non_blocking(StandardStream::stdout(ColorChoice::Auto)); _guards.push(_stdio_guard); // Try to create the log file's parent folders.