Commit Diff


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 %}