From e395fa6c5f1fa59f4d574cdf197ba855f42e8aa2 Mon Sep 17 00:00:00 2001 From: Evan Simmons Date: Sat, 15 Nov 2025 21:59:02 -0800 Subject: [PATCH] remove derive_more --- Cargo.toml | 1 - examples/custom.rs | 13 ++++++++++--- examples/custom_config.rs | 13 ++++++++++--- src/append/console.rs | 12 +++++++++--- src/append/file.rs | 2 -- src/append/rolling_file/mod.rs | 16 ++++++++++++---- src/config/raw.rs | 1 - src/encode/mod.rs | 2 -- src/encode/pattern/mod.rs | 13 +++++++++---- 9 files changed, 50 insertions(+), 23 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 1c164b99..f95b2382 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -93,7 +93,6 @@ parking_lot = { version = "0.12.0", optional = true } rand = { version = "0.9", optional = true } thiserror = "2.0.12" anyhow = "1.0.28" -derive_more = { version = "2.0.1", features = ["debug"] } mock_instant = "0.6" unicode-segmentation = "1.10.0" diff --git a/examples/custom.rs b/examples/custom.rs index fcde5bdb..9162cc22 100644 --- a/examples/custom.rs +++ b/examples/custom.rs @@ -6,7 +6,7 @@ //! - Print messages at the trace and debug levels to the console. //! - Write messages at the warning and error levels to a file. -use derive_more::Debug; +use core::fmt; use std::{ fs::{File, OpenOptions}, io::{BufWriter, Write}, @@ -78,14 +78,21 @@ impl Encode for MyEncoder { } /// A custom appender that writes to both console and file based on log level. -#[derive(Debug)] struct MyAppender { - #[debug(skip)] console_writer: ConsoleWriter, file_writer: Mutex>>, encoder: Box, } +impl fmt::Debug for MyAppender { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("MyAppender") + .field("file_writer", &self.file_writer) + .field("encoder", &self.encoder) + .finish_non_exhaustive() + } +} + impl MyAppender { fn new(file_name: &str, encoder: Box) -> Self { let console_writer = ConsoleWriter::stderr().unwrap(); diff --git a/examples/custom_config.rs b/examples/custom_config.rs index 97f32b71..4ffb94c2 100644 --- a/examples/custom_config.rs +++ b/examples/custom_config.rs @@ -1,8 +1,8 @@ //! In this example, we will define the Appender, Encoder and Filter using the same code as in custom.rs. //! However, unlike before, our logger will be initialized from a configuration file. -use derive_more::Debug; use std::{ + fmt, fs::{File, OpenOptions}, io::{BufWriter, Write}, sync::Mutex, @@ -73,14 +73,21 @@ impl Encode for MyEncoder { } /// A custom appender that writes to both console and file based on log level. -#[derive(Debug)] struct MyAppender { - #[debug(skip)] console_writer: ConsoleWriter, file_writer: Mutex>>, encoder: Box, } +impl fmt::Debug for MyAppender { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("MyAppender") + .field("file_writer", &self.file_writer) + .field("encoder", &self.encoder) + .finish_non_exhaustive() + } +} + impl MyAppender { fn new(file_name: &str, encoder: Box) -> Self { let console_writer = ConsoleWriter::stderr().unwrap(); diff --git a/src/append/console.rs b/src/append/console.rs index 2ff3ec24..909f733d 100644 --- a/src/append/console.rs +++ b/src/append/console.rs @@ -2,7 +2,6 @@ //! //! Requires the `console_appender` feature. -use derive_more::Debug; use log::Record; use std::{ fmt, @@ -29,7 +28,7 @@ use crate::{ /// The console appender's configuration. #[cfg(feature = "config_parsing")] -#[derive(Debug, serde::Deserialize)] +#[derive(serde::Deserialize)] #[serde(deny_unknown_fields)] pub struct ConsoleAppenderConfig { target: Option, @@ -50,6 +49,14 @@ enum Writer { Tty(ConsoleWriter), Raw(StdWriter), } +impl fmt::Debug for Writer { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + Writer::Tty(_) => write!(f, "Tty"), + Writer::Raw(_) => write!(f, "Raw"), + } + } +} impl Writer { fn lock(&self) -> WriterLock<'_> { @@ -119,7 +126,6 @@ impl<'a> encode::Write for WriterLock<'a> { /// or is a TTY on Unix. #[derive(Debug)] pub struct ConsoleAppender { - #[debug(skip)] writer: Writer, encoder: Box, do_write: bool, diff --git a/src/append/file.rs b/src/append/file.rs index 357697e0..7da2914d 100644 --- a/src/append/file.rs +++ b/src/append/file.rs @@ -3,7 +3,6 @@ //! Requires the `file_appender` feature. use chrono::prelude::Local; -use derive_more::Debug; use log::Record; use parking_lot::Mutex; use std::{ @@ -43,7 +42,6 @@ pub struct FileAppenderConfig { pub struct FileAppender { #[allow(dead_code)] // reason = "debug purposes only" path: PathBuf, - #[debug(skip)] file: Mutex>>, encoder: Box, } diff --git a/src/append/rolling_file/mod.rs b/src/append/rolling_file/mod.rs index afeedf6d..3b320ecc 100644 --- a/src/append/rolling_file/mod.rs +++ b/src/append/rolling_file/mod.rs @@ -16,7 +16,7 @@ //! //! Requires the `rolling_file_appender` feature. -use derive_more::Debug; +use core::fmt; use log::Record; use parking_lot::Mutex; use std::{ @@ -150,9 +150,7 @@ impl<'a> LogFile<'a> { } /// An appender which archives log files in a configurable strategy. -#[derive(Debug)] pub struct RollingFileAppender { - #[debug(skip)] writer: Mutex>, path: PathBuf, append: bool, @@ -160,6 +158,17 @@ pub struct RollingFileAppender { policy: Box, } +impl fmt::Debug for RollingFileAppender { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("RollingFileAppender") + .field("path", &self.path) + .field("append", &self.append) + .field("encoder", &self.encoder) + .field("policy", &self.policy) + .finish() + } +} + impl Append for RollingFileAppender { fn append(&self, record: &Record<'_>) -> anyhow::Result<()> { // TODO(eas): Perhaps this is better as a concurrent queue? @@ -365,7 +374,6 @@ impl Deserialize for RollingFileAppenderDeserializer { #[cfg(test)] mod test { - use derive_more::Debug; use std::{ fs::File, io::{Read, Write}, diff --git a/src/config/raw.rs b/src/config/raw.rs index ab9cae73..825b6da3 100644 --- a/src/config/raw.rs +++ b/src/config/raw.rs @@ -92,7 +92,6 @@ use std::{collections::HashMap, fmt, marker::PhantomData, sync::Arc, time::Duration}; use anyhow::anyhow; -use derive_more::Debug; use log::LevelFilter; use serde::de::{self, Deserialize as SerdeDeserialize, DeserializeOwned}; use serde_value::Value; diff --git a/src/encode/mod.rs b/src/encode/mod.rs index 42b558d3..709fc888 100644 --- a/src/encode/mod.rs +++ b/src/encode/mod.rs @@ -1,6 +1,5 @@ //! Encoders -use derive_more::Debug; use log::Record; use std::{fmt, io}; @@ -102,7 +101,6 @@ pub struct Style { pub background: Option, /// True if the text should have increased intensity. pub intense: Option, - #[debug(skip)] _p: (), } diff --git a/src/encode/pattern/mod.rs b/src/encode/pattern/mod.rs index 71048fd7..038bb701 100644 --- a/src/encode/pattern/mod.rs +++ b/src/encode/pattern/mod.rs @@ -140,9 +140,8 @@ //! [log_kv]: https://docs.rs/log/latest/log/kv/index.html use chrono::{Local, Utc}; -use derive_more::Debug; use log::{Level, Record}; -use std::{default::Default, io, mem, process, thread}; +use std::{default::Default, fmt, io, mem, process, thread}; use unicode_segmentation::{GraphemeCursor, UnicodeSegmentation}; use crate::encode::{ @@ -703,12 +702,18 @@ impl FormattedChunk { } /// An `Encode`r configured via a format string. -#[derive(Clone, Eq, Debug, PartialEq, Hash)] +#[derive(Clone, Eq, PartialEq, Hash)] pub struct PatternEncoder { - #[debug(skip)] chunks: Vec, pattern: String, } +impl fmt::Debug for PatternEncoder { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + f.debug_struct("PatternEncoder") + .field("pattern", &self.pattern) + .finish_non_exhaustive() + } +} /// Returns a `PatternEncoder` using the default pattern of `{d} {l} {t} - {m}{n}`. impl Default for PatternEncoder {