From cfa8046b78242864d76c6d7e6106050b70022945 Mon Sep 17 00:00:00 2001 From: marc Date: Wed, 25 Nov 2020 13:00:38 +0100 Subject: [PATCH] change logger --- Cargo.lock | 188 +++++++++++++++++++++++--------- Cargo.toml | 4 +- src/cmd/helm.rs | 8 +- src/cmd/kubectl.rs | 4 +- src/cmd/terraform.rs | 5 +- src/lib.rs | 2 +- test_utilities/Cargo.toml | 3 +- test_utilities/src/utilities.rs | 13 ++- tests/aws/aws_environment.rs | 47 +++++++- tests/aws/aws_kubernetes.rs | 5 +- 10 files changed, 207 insertions(+), 72 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e601bcd3..9d344521 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -24,6 +24,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "ansi_term" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +dependencies = [ + "winapi 0.3.9", +] + [[package]] name = "arc-swap" version = "0.4.7" @@ -53,17 +62,6 @@ dependencies = [ "syn 1.0.48", ] -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi", - "libc", - "winapi 0.3.9", -] - [[package]] name = "autocfg" version = "0.1.7" @@ -533,19 +531,6 @@ dependencies = [ "cfg-if 0.1.10", ] -[[package]] -name = "env_logger" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44533bbbb3bb3c1fa17d9f2e4e38bbbaf8396ba82193c4cb1b6445d711445d36" -dependencies = [ - "atty", - "humantime", - "log", - "regex", - "termcolor", -] - [[package]] name = "error-chain" version = "0.12.4" @@ -767,6 +752,19 @@ version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f5f3913fa0bfe7ee1fd8248b6b9f42a5af4b9d65ec2dd2c3c26132b950ecfc2" +[[package]] +name = "generator" +version = "0.6.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cdc09201b2e8ca1b19290cf7e65de2246b8e91fb6874279722189c4de7b94dc" +dependencies = [ + "cc", + "libc", + "log", + "rustc_version", + "winapi 0.3.9", +] + [[package]] name = "generic-array" version = "0.12.3" @@ -994,15 +992,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6cab2627acfc432780848602f3f558f7e9dd427352224b0d9324025796d2a5e" -[[package]] -name = "humantime" -version = "1.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df004cfca50ef23c36850aaaa59ad52cc70d0e90243c3c7737a4dd32dc7a3c4f" -dependencies = [ - "quick-error", -] - [[package]] name = "hyper" version = "0.12.35" @@ -1261,12 +1250,34 @@ dependencies = [ "cfg-if 0.1.10", ] +[[package]] +name = "loom" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0e8460f2f2121162705187214720353c517b97bdfb3494c0b1e33d83ebe4bed" +dependencies = [ + "cfg-if 0.1.10", + "generator", + "scoped-tls", + "serde", + "serde_json", +] + [[package]] name = "maplit" version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" +[[package]] +name = "matchers" +version = "0.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f099785f7595cc4b4553a174ce30dd7589ef93391ff414dbb67f62392b9e0ce1" +dependencies = [ + "regex-automata", +] + [[package]] name = "matches" version = "0.1.8" @@ -1527,7 +1538,7 @@ dependencies = [ "libc", "redox_syscall", "rustc_version", - "smallvec", + "smallvec 0.6.13", "winapi 0.3.9", ] @@ -1712,12 +1723,10 @@ dependencies = [ "digitalocean", "dirs 3.0.1", "dns-lookup", - "env_logger", "flate2", "gethostname", "git2", "itertools", - "log", "rand 0.7.3", "reqwest 0.10.8", "retry", @@ -1736,15 +1745,11 @@ dependencies = [ "tera", "test-utilities", "tokio 0.2.22", + "tracing", + "tracing-subscriber", "walkdir", ] -[[package]] -name = "quick-error" -version = "1.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" - [[package]] name = "quote" version = "0.6.13" @@ -1971,6 +1976,16 @@ dependencies = [ "thread_local", ] +[[package]] +name = "regex-automata" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae1ded71d66a4a97f5e961fd0cb25a5f366a42a41570d16a763a69c092c26ae4" +dependencies = [ + "byteorder", + "regex-syntax", +] + [[package]] name = "regex-syntax" version = "0.6.20" @@ -2280,6 +2295,12 @@ dependencies = [ "winapi 0.3.9", ] +[[package]] +name = "scoped-tls" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" + [[package]] name = "scopeguard" version = "1.1.0" @@ -2410,6 +2431,16 @@ dependencies = [ "opaque-debug 0.3.0", ] +[[package]] +name = "sharded-slab" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b4921be914e16899a80adefb821f8ddb7974e3f1250223575a44ed994882127" +dependencies = [ + "lazy_static", + "loom", +] + [[package]] name = "shlex" version = "0.1.1" @@ -2450,6 +2481,12 @@ dependencies = [ "maybe-uninit", ] +[[package]] +name = "smallvec" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7acad6f34eb9e8a259d3283d1e8c1d34d7415943d4895f65cc73813c7396fc85" + [[package]] name = "socket2" version = "0.3.15" @@ -2617,15 +2654,6 @@ dependencies = [ "unic-segment", ] -[[package]] -name = "termcolor" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb6bfa289a4d7c5766392812c0a1f4c1ba45afa1ad47803c11e1f407d846d75f" -dependencies = [ - "winapi-util", -] - [[package]] name = "test-utilities" version = "0.1.0" @@ -2634,13 +2662,14 @@ dependencies = [ "curl", "digitalocean", "dirs 3.0.1", - "env_logger", "qovery-engine", "rand 0.7.3", "reqwest 0.10.8", "serde", "serde_derive", "serde_json", + "tracing", + "tracing-subscriber", ] [[package]] @@ -2934,9 +2963,21 @@ dependencies = [ "cfg-if 0.1.10", "log", "pin-project-lite", + "tracing-attributes", "tracing-core", ] +[[package]] +name = "tracing-attributes" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80e0ccfc3378da0cce270c946b676a376943f5cd16aeba64568e7939806f4ada" +dependencies = [ + "proc-macro2 1.0.24", + "quote 1.0.7", + "syn 1.0.48", +] + [[package]] name = "tracing-core" version = "0.1.17" @@ -2956,6 +2997,49 @@ dependencies = [ "tracing", ] +[[package]] +name = "tracing-log" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e0f8c7178e13481ff6765bd169b33e8d554c5d2bbede5e32c356194be02b9b9" +dependencies = [ + "lazy_static", + "log", + "tracing-core", +] + +[[package]] +name = "tracing-serde" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb65ea441fbb84f9f6748fd496cf7f63ec9af5bca94dd86456978d055e8eb28b" +dependencies = [ + "serde", + "tracing-core", +] + +[[package]] +name = "tracing-subscriber" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1fa8f0c8f4c594e4fc9debc1990deab13238077271ba84dd853d54902ee3401" +dependencies = [ + "ansi_term", + "chrono", + "lazy_static", + "matchers", + "regex", + "serde", + "serde_json", + "sharded-slab", + "smallvec 1.5.0", + "thread_local", + "tracing", + "tracing-core", + "tracing-log", + "tracing-serde", +] + [[package]] name = "try-lock" version = "0.2.3" diff --git a/Cargo.toml b/Cargo.toml index e80ad61c..934c462f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,8 +27,8 @@ flate2 = "1.0.16" # tar gz tar = "0.4.29" # logger -env_logger = "0.7.1" -log = "0.4.8" +tracing = "0.1" +tracing-subscriber = "0.2" # Docker deps # shiplift = "0.6.0" diff --git a/src/cmd/helm.rs b/src/cmd/helm.rs index 9b2b682f..650b05b2 100644 --- a/src/cmd/helm.rs +++ b/src/cmd/helm.rs @@ -1,6 +1,6 @@ use std::io::Error; use std::path::Path; - +use tracing::{debug, error, info, span, warn, Level}; use crate::cmd::structs::{Helm, HelmHistoryRow}; use crate::cmd::utilities::exec_with_envs_and_output; use crate::error::{SimpleError, SimpleErrorKind}; @@ -356,10 +356,10 @@ pub fn helm_exec(args: Vec<&str>, envs: Vec<(&str, &str)>) -> Result<(), SimpleE args, envs, |line| { - info!("{}", line.unwrap()); + span!(Level::INFO, "{}","{}", line.unwrap()); }, - |line| { - error!("{}", line.unwrap()); + |line_err| { + span!(Level::INFO, "{}","{}", line_err.unwrap()); }, ) } diff --git a/src/cmd/kubectl.rs b/src/cmd/kubectl.rs index 9a23eae1..9b805df4 100644 --- a/src/cmd/kubectl.rs +++ b/src/cmd/kubectl.rs @@ -514,9 +514,7 @@ where ), }, Err(e) => warn!( - "Unable to execute describe on secrets: {}. it may not exist anymore?", - e.message.unwrap_or("".into()) - ), + "Unable to execute describe on secrets. it may not exist anymore?"), }; let mut _envs = Vec::with_capacity(envs.len() + 1); diff --git a/src/cmd/terraform.rs b/src/cmd/terraform.rs index ae4abc7c..3c71b5e1 100644 --- a/src/cmd/terraform.rs +++ b/src/cmd/terraform.rs @@ -5,6 +5,7 @@ use crate::constants::TF_PLUGIN_CACHE_DIR; use crate::error::{SimpleError, SimpleErrorKind}; use retry::delay::Fixed; use retry::OperationResult; +use tracing::{span, Level}; fn terraform_exec_with_init_validate_plan(root_dir: &str) -> Result<(), SimpleError> { // terraform init @@ -99,10 +100,10 @@ pub fn terraform_exec(root_dir: &str, args: Vec<&str>) -> Result<(), SimpleError args, vec![(TF_PLUGIN_CACHE_DIR, tf_plugin_cache_dir.as_str())], |line: Result| { - info!("{}", line.unwrap()); + span!(Level::INFO, "{}","{}", line.unwrap()); }, |line: Result| { - error!("{}", line.unwrap()); + span!(Level::ERROR, "{}","{}", line.unwrap()); }, ) } diff --git a/src/lib.rs b/src/lib.rs index 6753d9c3..05fe9e39 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,5 +1,5 @@ #[macro_use] -extern crate log; +extern crate tracing; extern crate tera; pub mod build_platform; diff --git a/test_utilities/Cargo.toml b/test_utilities/Cargo.toml index 92211dbc..1015fa21 100644 --- a/test_utilities/Cargo.toml +++ b/test_utilities/Cargo.toml @@ -10,13 +10,14 @@ edition = "2018" qovery-engine = { path = "../" } chrono = "0.4.11" dirs = "3.0.1" -env_logger = "0.7.1" rand = "0.7.3" serde = "1.0" serde_json = "1.0.57" serde_derive = "1.0" curl = "0.4.34" reqwest = { version = "0.10.8", features = ["blocking"] } +tracing = "0.1" +tracing-subscriber = "0.2" # Digital Ocean Deps digitalocean = "0.1.1" \ No newline at end of file diff --git a/test_utilities/src/utilities.rs b/test_utilities/src/utilities.rs index 5155e50e..33db716f 100644 --- a/test_utilities/src/utilities.rs +++ b/test_utilities/src/utilities.rs @@ -11,12 +11,23 @@ use crate::aws::{aws_access_key_id, KUBE_CLUSTER_ID, aws_secret_access_key, aws_ use qovery_engine::cloud_provider::aws::common; use qovery_engine::cmd; +use tracing::{info, Level,error,warn,span}; +use tracing_subscriber; +use tracing_subscriber::FmtSubscriber; +use tracing_subscriber::util::SubscriberInitExt; + pub fn build_platform_local_docker(context: &Context) -> LocalDocker { LocalDocker::new(context.clone(), "oxqlm3r99vwcmvuj", "qovery-local-docker") } pub fn init() { - env_logger::try_init(); + let collector = tracing_subscriber::fmt() + // filter spans/events with level TRACE or higher. + .with_max_level(Level::INFO) + // build but do not install the subscriber. + .finish(); + collector.try_init(); + println!( "running from current directory: {}", std::env::current_dir().unwrap().to_str().unwrap() diff --git a/tests/aws/aws_environment.rs b/tests/aws/aws_environment.rs index 1e50e46b..f97fe733 100644 --- a/tests/aws/aws_environment.rs +++ b/tests/aws/aws_environment.rs @@ -9,7 +9,7 @@ use qovery_engine::models::{ use qovery_engine::transaction::{DeploymentOption, TransactionResult}; use test_utilities::utilities::{init, is_pod_restarted_aws_env}; use self::test_utilities::aws::context; - +use tracing::{span,Level}; // insert how many actions you will use in tests // args are function you want to use and how many context you want to have // it permit you to create several different workspaces for each steps @@ -94,6 +94,9 @@ pub fn delete_environment( fn deploy_a_working_environment_with_no_router_on_aws_eks() { init(); + let span = span!(Level::INFO, "deploy_a_working_environment_with_no_router_on_aws_eks"); + let _enter = span.enter(); + let context = context(); let context_for_delete = context.clone_not_same_execution_id(); let mut environment = test_utilities::aws::working_minimal_environment(&context); @@ -120,6 +123,10 @@ fn deploy_a_working_environment_with_no_router_on_aws_eks() { #[test] fn deploy_dockerfile_not_exist() { init(); + + let span = span!(Level::TRACE, "deploy_dockerfile_not_exist"); + let _enter = span.enter(); + let context = context(); let context2 = context.clone_not_same_execution_id(); @@ -153,6 +160,9 @@ fn deploy_dockerfile_not_exist() { fn deploy_a_not_working_environment_with_no_router_on_aws_eks() { init(); + let span = span!(Level::TRACE, "deploy_a_not_working_environment_with_no_router_on_aws_eks"); + let _enter = span.enter(); + let context = context(); let context_for_deletion = context.clone_not_same_execution_id(); let mut environment = test_utilities::aws::non_working_environment(&context); @@ -186,6 +196,9 @@ fn deploy_a_not_working_environment_with_no_router_on_aws_eks() { fn deploy_a_working_environment_with_domain() { init(); + let span = span!(Level::TRACE, "deploy_a_working_environment_with_domain"); + let _enter = span.enter(); + let context = context(); let context_for_deletion = context.clone_not_same_execution_id(); @@ -214,6 +227,9 @@ fn deploy_a_working_environment_with_domain() { fn deploy_a_working_environment_with_custom_domain() { init(); + let span = span!(Level::TRACE, "deploy_a_working_environment_with_custom_domain"); + let _enter = span.enter(); + let context = context(); let context_for_delete = context.clone_not_same_execution_id(); @@ -225,9 +241,9 @@ fn deploy_a_working_environment_with_custom_domain() { .map(|mut router| { router.custom_domains = vec![CustomDomain { // should be the client domain - domain: "test-domain.CHANGE-ME/CUSTOM_TEST_DOMAIN".to_string(), + domain: "test-domain.qvy.io".to_string(), // should be our domain - target_domain: "target-domain.CHANGE-ME/DEFAULT_TEST_DOMAIN".to_string(), + target_domain: "target-domain.oom.sh".to_string(), }]; router }) @@ -241,7 +257,7 @@ fn deploy_a_working_environment_with_custom_domain() { .map(|mut router| { router.custom_domains = vec![CustomDomain { // should be the client domain - domain: "test-domain.CHANGE-ME/CUSTOM_TEST_DOMAIN".to_string(), + domain: "test-domain.qvy.io".to_string(), // should be our domain target_domain: "target-domain.DEFAULT_TEST_DOMAIN".to_string(), }]; @@ -269,6 +285,9 @@ fn deploy_a_working_environment_with_custom_domain() { fn deploy_a_working_environment_with_storage_on_aws_eks() { init(); + let span = span!(Level::TRACE, "deploy_a_working_environment_with_storage_on_aws_eks"); + let _enter = span.enter(); + let context = context(); let context_for_deletion = context.clone_not_same_execution_id(); @@ -334,6 +353,9 @@ fn deploy_a_working_environment_with_storage_on_aws_eks() { fn redeploy_same_app_with_ebs() { init(); + let span = span!(Level::TRACE, "redeploy_same_app_with_ebs"); + let _enter = span.enter(); + let context = context(); let context_bis = context.clone_not_same_execution_id(); let context_for_deletion = context.clone_not_same_execution_id(); @@ -472,6 +494,9 @@ fn deploy_a_working_production_environment_with_all_options_on_aws_eks() { fn deploy_a_not_working_environment_and_after_working_environment() { init(); + let span = span!(Level::TRACE, "deploy_a_not_working_environment_and_after_working_environment"); + let _enter = span.enter(); + // let mut contex_envs = generate_contexts_and_environments(3, test_utilities::aws::working_minimal_environment); let context = context(); let context_for_not_working = context.clone_not_same_execution_id(); @@ -521,6 +546,10 @@ fn deploy_a_not_working_environment_and_after_working_environment() { #[test] fn deploy_ok_fail_fail_ok_environment() { init(); + + let span = span!(Level::TRACE, "deploy_ok_fail_fail_ok_environment"); + let _enter = span.enter(); + // working env let context = context(); let environment = test_utilities::aws::working_minimal_environment(&context); @@ -604,6 +633,9 @@ fn deploy_ok_fail_fail_ok_environment() { fn deploy_a_non_working_environment_with_no_failover_on_aws_eks() { init(); + let span = span!(Level::TRACE, "deploy_a_non_working_environment_with_no_failover_on_aws_eks"); + let _enter = span.enter(); + let context = context(); let environment = test_utilities::aws::non_working_environment(&context); @@ -631,6 +663,10 @@ fn deploy_a_non_working_environment_with_no_failover_on_aws_eks() { #[ignore] fn deploy_a_non_working_environment_with_a_working_failover_on_aws_eks() { init(); + + let span = span!(Level::TRACE, "deploy_a_non_working_environment_with_a_working_failover_on_aws_eks"); + let _enter = span.enter(); + // context for non working environment let context = context(); @@ -717,6 +753,9 @@ fn deploy_a_non_working_environment_with_a_working_failover_on_aws_eks() { fn deploy_a_non_working_environment_with_a_non_working_failover_on_aws_eks() { init(); + let span = span!(Level::TRACE, "deploy_a_non_working_environment_with_a_non_working_failover_on_aws_eks"); + let _enter = span.enter(); + let context = context(); let environment = test_utilities::aws::non_working_environment(&context); diff --git a/tests/aws/aws_kubernetes.rs b/tests/aws/aws_kubernetes.rs index 4a30ebf9..62248033 100644 --- a/tests/aws/aws_kubernetes.rs +++ b/tests/aws/aws_kubernetes.rs @@ -3,7 +3,7 @@ use self::test_utilities::aws::{aws_access_key_id, aws_default_region, aws_secre use self::test_utilities::cloudflare::dns_provider_cloudflare; use self::test_utilities::utilities::{generate_id, init}; use gethostname; -use log::{info, warn}; +use tracing::{debug, error, info, span, warn, Level}; use qovery_engine::build_platform::GitRepository; use qovery_engine::cloud_provider::aws::kubernetes::EKS; use qovery_engine::git; @@ -160,7 +160,8 @@ fn create_eks_cluster_in_us_east_2() { fn delete_eks_cluster_in_us_east_2() { init(); - + let span = span!(Level::TRACE, "create_eks_cluster_in_us_east_2"); + let _enter = span.enter(); let context = test_utilities::aws::context(); let engine = test_utilities::aws::docker_ecr_aws_engine(&context);