cli.rs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. //! Common CLI and logging utilities for CDK integration test binaries
  2. //!
  3. //! This module provides standardized CLI argument parsing and logging setup
  4. //! for integration test binaries.
  5. use clap::Parser;
  6. use tracing_subscriber::EnvFilter;
  7. /// Common CLI arguments for CDK integration test binaries
  8. #[derive(Parser, Debug)]
  9. pub struct CommonArgs {
  10. /// Enable logging (default is false)
  11. #[arg(long, default_value_t = false)]
  12. pub enable_logging: bool,
  13. /// Logging level when enabled (default is debug)
  14. #[arg(long, default_value = "debug")]
  15. pub log_level: tracing::Level,
  16. }
  17. /// Initialize logging based on CLI arguments
  18. pub fn init_logging(enable_logging: bool, log_level: tracing::Level) {
  19. if enable_logging {
  20. let default_filter = log_level.to_string();
  21. // Common filters to reduce noise
  22. let sqlx_filter = "sqlx=warn";
  23. let hyper_filter = "hyper=warn";
  24. let h2_filter = "h2=warn";
  25. let rustls_filter = "rustls=warn";
  26. let reqwest_filter = "reqwest=warn";
  27. let tower_filter = "tower_http=warn";
  28. let env_filter = EnvFilter::new(format!(
  29. "{default_filter},{sqlx_filter},{hyper_filter},{h2_filter},{rustls_filter},{reqwest_filter},{tower_filter}"
  30. ));
  31. // Ok if successful, Err if already initialized
  32. let _ = tracing_subscriber::fmt()
  33. .with_env_filter(env_filter)
  34. .try_init();
  35. }
  36. }