commit 2c55d20a05981d8e7073a8c433a07f9f1dc08a54 from: murilo ijanc date: Sat Nov 22 14:32:44 2025 UTC Add placeholder project-diagnosis possible choice is log or tracing commit - 70441f087263395b78bb70888bbb7de7574e4ff9 commit + 2c55d20a05981d8e7073a8c433a07f9f1dc08a54 blob - 41f977e156c9598f3b3907dbc74c8034d2b8436b blob + 984b550ff47026df8ba8a238ed8a36d063372902 --- cli/template/Cargo.toml +++ cli/template/Cargo.toml @@ -30,8 +30,13 @@ all = { level = "warn", priority = -1 } [dependencies] anyhow = "=1.0.100" clap = { version = "=4.5.53", features = ["derive"] } +{% if project-diagnosis == "log" -%} env_logger = "=0.11.8" log = "=0.4.28" +{% else -%} +tracing = "=0.1.41" +tracing-subscriber = { version = "=0.3.20", features = ["env-filter"] } +{% endif %} # # profiles blob - ec598e7aeffec900c5789433edba560252bac5d4 blob + c98db1962340b82a20a821702ac0f18ac01b230c --- cli/template/cargo-generate.toml +++ cli/template/cargo-generate.toml @@ -3,3 +3,4 @@ cargo_generate_version = ">=0.23.0" [placeholders] project-description = { type = "string", prompt = "Short description of the project", default = "An example generated using the simple template" } +project-diagnosis = { prompt = "Enter log or tracing", choices = ["log", "tracing"], default = "log", type = "string" } blob - b496ebde699dd85ae7b38711ae1e32a61eca5b2c blob + e544de3528f9238c07a35d7657749dd0a90a9aa2 --- cli/template/src/main.rs +++ cli/template/src/main.rs @@ -16,7 +16,12 @@ use anyhow::Result; use clap::{ArgAction, Parser}; -use log::{LevelFilter, info, debug}; +{% if project-diagnosis == "log" -%} +use log::{debug, info}; +{% else -%} +use tracing::{debug, info}; +use tracing_subscriber::EnvFilter; +{% endif %} const VERSION: &str = concat!( env!("CARGO_PKG_VERSION"), @@ -54,8 +59,16 @@ fn main() -> Result<()> { Ok(()) } +{% if project-diagnosis == "log" -%} +/// Initialize log based on RUST_LOG and the CLI verbosity. +/// +/// Rules: +/// - If RUST_LOG is set, it is fully respected. +/// - If RUST_LOG is not set and verbose == 0 -> INFO level. +/// - If RUST_LOG is not set and verbose > 0 -> DEBUG level. fn init_logger(verbose: u8) { use std::io::Write; + use log::LevelFilter; if std::env::var_os("RUST_LOG").is_some() { env_logger::builder() @@ -76,3 +89,27 @@ fn init_logger(verbose: u8) { }) .init(); } +{% else -%} +/// Initialize tracing based on RUST_LOG and the CLI verbosity. +/// +/// Rules: +/// - If RUST_LOG is set, it is fully respected. +/// - If RUST_LOG is not set and verbose == 0 -> INFO level. +/// - If RUST_LOG is not set and verbose > 0 -> DEBUG level. +fn init_logger(verbose: u8) { + if std::env::var_os("RUST_LOG").is_some() { + tracing_subscriber::fmt() + .with_env_filter(EnvFilter::from_default_env()) + .init(); + return; + } + + let filter = if verbose > 0 { + EnvFilter::new("debug") + } else { + EnvFilter::new("info") + }; + + tracing_subscriber::fmt().with_env_filter(filter).init(); +} +{% endif %}