From b4a2c304c16d1db4a2998f24c00e00c0f776113b Mon Sep 17 00:00:00 2001 From: Ed Page Date: Fri, 19 Jan 2024 10:56:23 -0600 Subject: [PATCH 1/2] chore: Add a workspace --- Cargo.toml | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index a4ccec8..9c17f7c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,13 +1,7 @@ -[package] -name = "env_logger" -version = "0.10.2" -description = """ -A logging implementation for `log` which is configured via an environment -variable. -""" -repository = "https://github.com/rust-cli/env_logger" -categories = ["development-tools::debugging"] -keywords = ["logging", "log", "logger"] +[workspace] +resolver = "2" + +[workspace.package] license = "MIT OR Apache-2.0" edition = "2021" rust-version = "1.71" # MSRV @@ -23,6 +17,21 @@ include = [ "tests/**/*", ] +[package] +name = "env_logger" +version = "0.10.2" +description = """ +A logging implementation for `log` which is configured via an environment +variable. +""" +repository = "https://github.com/rust-cli/env_logger" +categories = ["development-tools::debugging"] +keywords = ["logging", "log", "logger"] +license.workspace = true +edition.workspace = true +rust-version.workspace = true +include.workspace = true + [package.metadata.docs.rs] all-features = true rustdoc-args = ["--cfg", "docsrs"] From f1877824da51e8b79bcd8747e168b610b4a64cb3 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Fri, 19 Jan 2024 11:12:17 -0600 Subject: [PATCH 2/2] refactor: Split out env_filter package Fixes #193 --- Cargo.lock | 10 +++++- Cargo.toml | 5 +-- crates/env_filter/CHANGELOG.md | 11 ++++++ crates/env_filter/Cargo.toml | 34 +++++++++++++++++++ crates/env_filter/LICENSE-APACHE | 1 + crates/env_filter/LICENSE-MIT | 1 + crates/env_filter/README.md | 6 ++++ .../mod.rs => crates/env_filter/src/lib.rs | 27 +++++---------- .../filter => crates/env_filter/src}/regex.rs | 4 +-- .../env_filter/src}/string.rs | 0 src/lib.rs | 3 +- 11 files changed, 76 insertions(+), 26 deletions(-) create mode 100644 crates/env_filter/CHANGELOG.md create mode 100644 crates/env_filter/Cargo.toml create mode 120000 crates/env_filter/LICENSE-APACHE create mode 120000 crates/env_filter/LICENSE-MIT create mode 100644 crates/env_filter/README.md rename src/filter/mod.rs => crates/env_filter/src/lib.rs (97%) rename {src/filter => crates/env_filter/src}/regex.rs (91%) rename {src/filter => crates/env_filter/src}/string.rs (100%) diff --git a/Cargo.lock b/Cargo.lock index 69452d2..776d340 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -71,15 +71,23 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +[[package]] +name = "env_filter" +version = "0.1.0" +dependencies = [ + "log", + "regex", +] + [[package]] name = "env_logger" version = "0.10.2" dependencies = [ "anstream", "anstyle", + "env_filter", "humantime", "log", - "regex", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 9c17f7c..b669cef 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,6 @@ [workspace] resolver = "2" +members = ["crates/*"] [workspace.package] license = "MIT OR Apache-2.0" @@ -50,11 +51,11 @@ default = ["auto-color", "humantime", "regex"] color = ["dep:anstream", "dep:anstyle"] auto-color = ["color", "anstream/auto"] humantime = ["dep:humantime"] -regex = ["dep:regex"] +regex = ["env_filter/regex"] [dependencies] log = { version = "0.4.8", features = ["std"] } -regex = { version = "1.0.3", optional = true, default-features=false, features=["std", "perf"] } +env_filter = { version = "0.1.0", path = "crates/env_filter", default-features = false } humantime = { version = "2.0.0", optional = true } anstream = { version = "0.6.11", default-features = false, features = ["wincon"], optional = true } anstyle = { version = "1.0.4", optional = true } diff --git a/crates/env_filter/CHANGELOG.md b/crates/env_filter/CHANGELOG.md new file mode 100644 index 0000000..78e2e12 --- /dev/null +++ b/crates/env_filter/CHANGELOG.md @@ -0,0 +1,11 @@ +# Change Log +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](http://keepachangelog.com/) +and this project adheres to [Semantic Versioning](http://semver.org/). + + +## [Unreleased] - ReleaseDate + + +[Unreleased]: https://github.com/rust-cli/env_logger/compare/b4a2c304c16d1db4a2998f24c00e00c0f776113b...HEAD diff --git a/crates/env_filter/Cargo.toml b/crates/env_filter/Cargo.toml new file mode 100644 index 0000000..9ac0fa4 --- /dev/null +++ b/crates/env_filter/Cargo.toml @@ -0,0 +1,34 @@ +[package] +name = "env_filter" +version = "0.1.0" +description = """ +Filter log events using environment variables +""" +repository = "https://github.com/rust-cli/env_logger" +categories = ["development-tools::debugging"] +keywords = ["logging", "log", "logger"] +license.workspace = true +edition.workspace = true +rust-version.workspace = true +include.workspace = true + +[package.metadata.docs.rs] +all-features = true +rustdoc-args = ["--cfg", "docsrs"] + +[package.metadata.release] +pre-release-replacements = [ + {file="CHANGELOG.md", search="Unreleased", replace="{{version}}", min=1}, + {file="CHANGELOG.md", search="\\.\\.\\.HEAD", replace="...{{tag_name}}", exactly=1}, + {file="CHANGELOG.md", search="ReleaseDate", replace="{{date}}", min=1}, + {file="CHANGELOG.md", search="", replace="\n## [Unreleased] - ReleaseDate\n", exactly=1}, + {file="CHANGELOG.md", search="", replace="\n[Unreleased]: https://github.com/rust-cli/env_logger/compare/{{tag_name}}...HEAD", exactly=1}, +] + +[features] +default = ["regex"] +regex = ["dep:regex"] + +[dependencies] +log = { version = "0.4.8", features = ["std"] } +regex = { version = "1.0.3", optional = true, default-features=false, features=["std", "perf"] } diff --git a/crates/env_filter/LICENSE-APACHE b/crates/env_filter/LICENSE-APACHE new file mode 120000 index 0000000..1cd601d --- /dev/null +++ b/crates/env_filter/LICENSE-APACHE @@ -0,0 +1 @@ +../../LICENSE-APACHE \ No newline at end of file diff --git a/crates/env_filter/LICENSE-MIT b/crates/env_filter/LICENSE-MIT new file mode 120000 index 0000000..b2cfbdc --- /dev/null +++ b/crates/env_filter/LICENSE-MIT @@ -0,0 +1 @@ +../../LICENSE-MIT \ No newline at end of file diff --git a/crates/env_filter/README.md b/crates/env_filter/README.md new file mode 100644 index 0000000..9e5164f --- /dev/null +++ b/crates/env_filter/README.md @@ -0,0 +1,6 @@ +# env_filter + +[![crates.io](https://img.shields.io/crates/v/env_filter.svg)](https://crates.io/crates/env_filter) +[![Documentation](https://docs.rs/env_filter/badge.svg)](https://docs.rs/env_filter) + +> Filter log events using environment variables diff --git a/src/filter/mod.rs b/crates/env_filter/src/lib.rs similarity index 97% rename from src/filter/mod.rs rename to crates/env_filter/src/lib.rs index d4acf63..5d7d60b 100644 --- a/src/filter/mod.rs +++ b/crates/env_filter/src/lib.rs @@ -1,21 +1,17 @@ //! Filtering for log records. //! -//! This module contains the log filtering used by `env_logger` to match records. -//! You can use the `Filter` type in your own logger implementation to use the same -//! filter parsing and matching as `env_logger`. For more details about the format -//! for directive strings see [Enabling Logging]. +//! You can use the [`Filter`] type in your own logger implementation to use the same +//! filter parsing and matching as `env_logger`. //! -//! ## Using `env_logger` in your own logger +//! ## Using `env_filter` in your own logger //! -//! You can use `env_logger`'s filtering functionality with your own logger. +//! You can use `env_filter`'s filtering functionality with your own logger. //! Call [`Builder::parse`] to parse directives from a string when constructing //! your logger. Call [`Filter::matches`] to check whether a record should be //! logged based on the parsed filters when log records are received. //! //! ``` -//! extern crate log; -//! extern crate env_logger; -//! use env_logger::filter::Filter; +//! use env_filter::Filter; //! use log::{Log, Metadata, Record}; //! //! struct MyLogger { @@ -24,7 +20,7 @@ //! //! impl MyLogger { //! fn new() -> MyLogger { -//! use env_logger::filter::Builder; +//! use env_filter::Builder; //! let mut builder = Builder::new(); //! //! // Parse a directives string from an environment variable @@ -53,10 +49,6 @@ //! fn flush(&self) {} //! } //! ``` -//! -//! [Enabling Logging]: ../index.html#enabling-logging -//! [`Builder::parse`]: struct.Builder.html#method.parse -//! [`Filter::matches`]: struct.Filter.html#method.matches use log::{Level, LevelFilter, Metadata, Record}; use std::env; @@ -79,9 +71,8 @@ mod inner; /// ## Example /// /// ``` -/// # #[macro_use] extern crate log; /// # use std::env; -/// use env_logger::filter::Builder; +/// use env_filter::Builder; /// /// let mut builder = Builder::new(); /// @@ -92,8 +83,6 @@ mod inner; /// /// let filter = builder.build(); /// ``` -/// -/// [`Filter`]: struct.Filter.html pub struct Builder { directives: Vec, filter: Option, @@ -248,7 +237,7 @@ impl Filter { /// /// ```rust /// use log::LevelFilter; - /// use env_logger::filter::Builder; + /// use env_filter::Builder; /// /// let mut builder = Builder::new(); /// builder.filter(Some("module1"), LevelFilter::Info); diff --git a/src/filter/regex.rs b/crates/env_filter/src/regex.rs similarity index 91% rename from src/filter/regex.rs rename to crates/env_filter/src/regex.rs index fb21528..d56355a 100644 --- a/src/filter/regex.rs +++ b/crates/env_filter/src/regex.rs @@ -1,8 +1,6 @@ -extern crate regex; - use std::fmt; -use self::regex::Regex; +use regex::Regex; #[derive(Debug)] pub struct Filter { diff --git a/src/filter/string.rs b/crates/env_filter/src/string.rs similarity index 100% rename from src/filter/string.rs rename to crates/env_filter/src/string.rs diff --git a/src/lib.rs b/src/lib.rs index 93eba6c..76cbf3a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -277,7 +277,8 @@ mod logger; -pub mod filter; +#[doc(inline)] +pub use ::env_filter as filter; pub mod fmt; pub use self::fmt::{Target, TimestampPrecision, WriteStyle};