From f26fb409f6a11bca1f3d0831a432bd96a3a78087 Mon Sep 17 00:00:00 2001 From: xeniape Date: Thu, 19 Dec 2024 14:58:13 +0100 Subject: [PATCH 1/8] feat: add RollingFileAppender to stackable-telemetry --- Cargo.lock | 457 +++++++++--------- crates/stackable-telemetry/Cargo.toml | 1 + crates/stackable-telemetry/src/tracing/mod.rs | 83 +++- .../src/tracing/settings/file_log.rs | 155 ++++++ .../src/tracing/settings/mod.rs | 8 + 5 files changed, 476 insertions(+), 228 deletions(-) create mode 100644 crates/stackable-telemetry/src/tracing/settings/file_log.rs diff --git a/Cargo.lock b/Cargo.lock index 1cdc26c21..a3b129e28 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -41,9 +41,9 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45862d1c77f2228b9e10bc609d5bc203d86ebc9b87ad8d5d5167a6c9abf739d9" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "anstream" @@ -96,9 +96,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.93" +version = "1.0.94" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" +checksum = "c1fd03a028ef38ba2276dce7e33fcd6369c158a1bca17946c4b1b701891c1ff7" [[package]] name = "async-broadcast" @@ -131,7 +131,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -142,7 +142,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -159,9 +159,9 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "aws-lc-rs" -version = "1.11.1" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f47bb8cc16b669d267eeccf585aea077d0882f4777b1c1f740217885d6e6e5a3" +checksum = "f409eb70b561706bf8abba8ca9c112729c481595893fd06a2dd9af8ed8441148" dependencies = [ "aws-lc-sys", "paste", @@ -170,9 +170,9 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.23.1" +version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2101df3813227bbaaaa0b04cd61c534c7954b22bd68d399b440be937dc63ff7" +checksum = "8478a5c29ead3f3be14aff8a202ad965cf7da6856860041bfca271becf8ba48b" dependencies = [ "bindgen", "cc", @@ -196,7 +196,7 @@ dependencies = [ "futures-util", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.31", + "hyper 0.14.32", "itoa", "matchit", "memchr", @@ -221,10 +221,10 @@ dependencies = [ "axum-core 0.4.5", "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.5.1", + "hyper 1.5.2", "hyper-util", "itoa", "matchit", @@ -239,7 +239,7 @@ dependencies = [ "serde_urlencoded", "sync_wrapper 1.0.2", "tokio", - "tower 0.5.1", + "tower 0.5.2", "tower-layer", "tower-service", "tracing", @@ -271,7 +271,7 @@ dependencies = [ "async-trait", "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", "mime", @@ -352,7 +352,7 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.89", + "syn 2.0.90", "which", ] @@ -394,9 +394,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a68f1f47cdf0ec8ee4b941b2eee2a80cb796db73118c0dd09ac63fbe405be22" +checksum = "786a307d683a5bf92e6fd5fd69a7eb613751668d1d8d67d802846dfe367c62c8" dependencies = [ "memchr", "serde", @@ -416,15 +416,15 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" [[package]] name = "cc" -version = "1.2.1" +version = "1.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd9de9f2205d5ef3fd67e685b0df337994ddd4495e2a28d185500d0e1edfea47" +checksum = "c31a0499c1dc64f458ad13872de75c0eb7e3fdb0e67964610c914b034fc5956e" dependencies = [ "jobserver", "libc", @@ -448,9 +448,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.38" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" dependencies = [ "num-traits", "serde", @@ -469,9 +469,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.21" +version = "4.5.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb3b4b9e5a7c7514dfa52869339ee98b3156b0bfb4e8a77c4ff4babb64b1604f" +checksum = "3135e7ec2ef7b10c6ed8950f0f792ed96ee093fa088608f1c76e569722700c84" dependencies = [ "clap_builder", "clap_derive", @@ -479,9 +479,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.21" +version = "4.5.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b17a95aa67cc7b5ebd32aa5370189aa0d79069ef1c64ce893bd30fb24bff20ec" +checksum = "30582fc632330df2bd26877bde0c1f4470d57c582bbc070376afcd04d8cb4838" dependencies = [ "anstream", "anstyle", @@ -498,14 +498,14 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] name = "clap_lex" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afb84c814227b90d6895e01398aee0d8033c00e7466aca416fb6a8e0eb19d8a7" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "cmake" @@ -533,14 +533,14 @@ dependencies = [ [[package]] name = "console" -version = "0.15.8" +version = "0.15.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +checksum = "ea3c6ecd8059b57859df5c69830340ed3c41d30e3da0c1cbed90a96ac853041b" dependencies = [ "encode_unicode", - "lazy_static", "libc", - "windows-sys 0.52.0", + "once_cell", + "windows-sys 0.59.0", ] [[package]] @@ -551,18 +551,18 @@ checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" [[package]] name = "const_format" -version = "0.2.33" +version = "0.2.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50c655d81ff1114fb0dcdea9225ea9f0cc712a6f8d189378e82bdf62a473a64b" +checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" dependencies = [ "const_format_proc_macros", ] [[package]] name = "const_format_proc_macros" -version = "0.2.33" +version = "0.2.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eff1a44b93f47b1bac19a27932f5c591e43d1ba357ee4f61526c8a25603f0eb1" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" dependencies = [ "proc-macro2", "quote", @@ -624,18 +624,18 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.13" +version = "0.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" +checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crypto-bigint" @@ -680,7 +680,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -691,7 +691,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -702,7 +702,7 @@ checksum = "bc2323e10c92e1cf4d86e11538512e6dc03ceb586842970b6332af3d4046a046" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -726,7 +726,7 @@ checksum = "8034092389675178f570469e6c3b0465d3d30b4505c294a6550db47f3c17ad18" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -758,7 +758,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -816,7 +816,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -847,9 +847,9 @@ dependencies = [ [[package]] name = "encode_unicode" -version = "0.3.6" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "encoding_rs" @@ -866,7 +866,7 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06c36cb11dbde389f4096111698d8b567c0720e3452fd5ac3e6b4e47e1939932" dependencies = [ - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -886,7 +886,7 @@ checksum = "0d28318a75d4aead5c4db25382e8ef717932d0346600cacae6357eb5941bc5ff" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -897,12 +897,12 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -918,9 +918,9 @@ dependencies = [ [[package]] name = "event-listener-strategy" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" +checksum = "3c3e4e0dd3673c1139bf041f3008816d9cf2946bbfac2945c09e523b8d7b05b2" dependencies = [ "event-listener", "pin-project-lite", @@ -939,9 +939,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "ff" @@ -1055,7 +1055,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -1164,7 +1164,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.6.0", + "indexmap 2.7.0", "slab", "tokio", "tokio-util", @@ -1182,8 +1182,8 @@ dependencies = [ "fnv", "futures-core", "futures-sink", - "http 1.1.0", - "indexmap 2.6.0", + "http 1.2.0", + "indexmap 2.7.0", "slab", "tokio", "tokio-util", @@ -1221,7 +1221,7 @@ dependencies = [ "base64 0.21.7", "bytes", "headers-core", - "http 1.1.0", + "http 1.2.0", "httpdate", "mime", "sha1", @@ -1233,7 +1233,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" dependencies = [ - "http 1.1.0", + "http 1.2.0", ] [[package]] @@ -1259,11 +1259,11 @@ dependencies = [ [[package]] name = "home" -version = "0.5.9" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -1279,9 +1279,9 @@ dependencies = [ [[package]] name = "http" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +checksum = "f16ca2af56261c99fba8bac40a10251ce8188205a4c448fbb745a2e4daa76fea" dependencies = [ "bytes", "fnv", @@ -1306,7 +1306,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.1.0", + "http 1.2.0", ] [[package]] @@ -1317,7 +1317,7 @@ checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" dependencies = [ "bytes", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "pin-project-lite", ] @@ -1336,9 +1336,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "0.14.31" +version = "0.14.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c08302e8fa335b151b788c775ff56e7a03ae64ff85c548ee820fecb70356e85" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" dependencies = [ "bytes", "futures-channel", @@ -1360,15 +1360,15 @@ dependencies = [ [[package]] name = "hyper" -version = "1.5.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97818827ef4f364230e16705d4706e2897df2bb60617d6ca15d598025a3c481f" +checksum = "256fb8d4bd6413123cc9d91832d78325c48ff41677595be797d90f42969beae0" dependencies = [ "bytes", "futures-channel", "futures-util", "h2 0.4.7", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "httparse", "httpdate", @@ -1388,8 +1388,8 @@ dependencies = [ "bytes", "futures-util", "headers", - "http 1.1.0", - "hyper 1.5.1", + "http 1.2.0", + "hyper 1.5.2", "hyper-rustls", "hyper-util", "pin-project-lite", @@ -1401,13 +1401,13 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.3" +version = "0.27.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" +checksum = "f6884a48c6826ec44f524c7456b163cebe9e55a18d7b5e307cb4f100371cc767" dependencies = [ "futures-util", - "http 1.1.0", - "hyper 1.5.1", + "http 1.2.0", + "hyper 1.5.2", "hyper-util", "log", "rustls", @@ -1424,7 +1424,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" dependencies = [ - "hyper 0.14.31", + "hyper 0.14.32", "pin-project-lite", "tokio", "tokio-io-timeout", @@ -1436,7 +1436,7 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" dependencies = [ - "hyper 1.5.1", + "hyper 1.5.2", "hyper-util", "pin-project-lite", "tokio", @@ -1452,9 +1452,9 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", - "hyper 1.5.1", + "hyper 1.5.2", "pin-project-lite", "socket2", "tokio", @@ -1577,7 +1577,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -1619,9 +1619,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" +checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" dependencies = [ "equivalent", "hashbrown 0.15.2", @@ -1708,10 +1708,11 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.72" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" +checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" dependencies = [ + "once_cell", "wasm-bindgen", ] @@ -1724,7 +1725,7 @@ dependencies = [ "jsonptr", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -1739,7 +1740,7 @@ dependencies = [ "pest_derive", "regex", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -1778,7 +1779,7 @@ dependencies = [ "rstest", "rstest_reuse", "snafu 0.8.5", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -1806,10 +1807,10 @@ dependencies = [ "either", "futures", "home", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.5.1", + "hyper 1.5.2", "hyper-http-proxy", "hyper-rustls", "hyper-timeout 0.5.2", @@ -1824,10 +1825,10 @@ dependencies = [ "serde", "serde_json", "serde_yaml", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-util", - "tower 0.5.1", + "tower 0.5.2", "tower-http", "tracing", ] @@ -1840,14 +1841,14 @@ checksum = "f42346d30bb34d1d7adc5c549b691bce7aa3a1e60254e68fab7e2d7b26fe3d77" dependencies = [ "chrono", "form_urlencoded", - "http 1.1.0", + "http 1.2.0", "json-patch", "k8s-openapi", "schemars", "serde", "serde-value", "serde_json", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -1860,7 +1861,7 @@ dependencies = [ "proc-macro2", "quote", "serde_json", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -1885,7 +1886,7 @@ dependencies = [ "pin-project", "serde", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-util", "tracing", @@ -1908,15 +1909,15 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.166" +version = "0.2.169" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2ccc108bbc0b1331bd061864e7cd823c0cab660bbe6970e66e2c0614decde36" +checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" [[package]] name = "libloading" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" +checksum = "fc2f4eb4bc735547cfed7c0a4922cbd04a4655978c09b54f1f7b228750664c34" dependencies = [ "cfg-if", "windows-targets", @@ -1997,20 +1998,19 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.8.0" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" +checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" dependencies = [ "adler2", ] [[package]] name = "mio" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ - "hermit-abi", "libc", "wasi", "windows-sys 0.52.0", @@ -2131,7 +2131,7 @@ dependencies = [ "js-sys", "once_cell", "pin-project-lite", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -2176,7 +2176,7 @@ dependencies = [ "opentelemetry-proto", "opentelemetry_sdk", "prost", - "thiserror", + "thiserror 1.0.69", "tokio", "tonic", ] @@ -2217,7 +2217,7 @@ dependencies = [ "percent-encoding", "rand", "serde_json", - "thiserror", + "thiserror 1.0.69", "tokio", "tokio-stream", ] @@ -2320,20 +2320,20 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" -version = "2.7.14" +version = "2.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879952a81a83930934cbf1786752d6dedc3b1f29e8f8fb2ad1d0a36f377cf442" +checksum = "8b7cafe60d6cf8e62e1b9b2ea516a089c008945bb5a275416789e7db0bc199dc" dependencies = [ "memchr", - "thiserror", + "thiserror 2.0.8", "ucd-trie", ] [[package]] name = "pest_derive" -version = "2.7.14" +version = "2.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d214365f632b123a47fd913301e14c946c61d1c183ee245fa76eb752e59a02dd" +checksum = "816518421cfc6887a0d62bf441b6ffb4536fcc926395a69e1a85852d4363f57e" dependencies = [ "pest", "pest_generator", @@ -2341,22 +2341,22 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.14" +version = "2.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb55586734301717aea2ac313f50b2eb8f60d2fc3dc01d190eefa2e625f60c4e" +checksum = "7d1396fd3a870fc7838768d171b4616d5c91f6cc25e377b673d714567d99377b" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] name = "pest_meta" -version = "2.7.14" +version = "2.7.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b75da2a70cf4d9cb76833c990ac9cd3923c9a8905a8929789ce347c84564d03d" +checksum = "e1e58089ea25d717bfd31fb534e4f3afcc2cc569c70de3e239778991ea3b7dea" dependencies = [ "once_cell", "pest", @@ -2380,7 +2380,7 @@ checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -2438,7 +2438,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" dependencies = [ "proc-macro2", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -2504,7 +2504,7 @@ dependencies = [ "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -2548,9 +2548,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ "bitflags 2.6.0", ] @@ -2677,7 +2677,7 @@ dependencies = [ "regex", "relative-path", "rustc_version", - "syn 2.0.89", + "syn 2.0.90", "unicode-ident", ] @@ -2689,7 +2689,7 @@ checksum = "b3a8fb4672e840a587a66fc577a5491375df51ddb88f2a2c2a792598c326fe14" dependencies = [ "quote", "rand", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -2715,22 +2715,22 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.41" +version = "0.38.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6" +checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" dependencies = [ "bitflags 2.6.0", "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "rustls" -version = "0.23.19" +version = "0.23.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "934b404430bb06b3fae2cba809eb45a1ab1aecd64491213d7c3301b88393f8d1" +checksum = "5065c3f250cbd332cd894be57c40fa52387247659b14a2d6041d121547903b1b" dependencies = [ "aws-lc-rs", "log", @@ -2764,7 +2764,7 @@ dependencies = [ "openssl-probe", "rustls-pki-types", "schannel", - "security-framework 3.0.1", + "security-framework 3.1.0", ] [[package]] @@ -2778,9 +2778,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.10.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" +checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37" [[package]] name = "rustls-webpki" @@ -2846,7 +2846,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -2893,9 +2893,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "3.0.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1415a607e92bec364ea2cf9264646dcce0f91e6d65281bd6f2819cca3bf39c8" +checksum = "81d3f8c9bfcc3cbb6b0179eb57042d75b1582bdc65c3cb95f3fa999509c03cbc" dependencies = [ "bitflags 2.6.0", "core-foundation 0.10.0", @@ -2906,9 +2906,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.12.1" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2" +checksum = "1863fd3768cd83c56a7f60faa4dc0d403f1b6df0a38c3c25f44b7894e45370d5" dependencies = [ "core-foundation-sys", "libc", @@ -2916,15 +2916,15 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.23" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" [[package]] name = "serde" -version = "1.0.215" +version = "1.0.216" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" +checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e" dependencies = [ "serde_derive", ] @@ -2941,13 +2941,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.215" +version = "1.0.216" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" +checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -2958,7 +2958,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -3010,7 +3010,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.6.0", + "indexmap 2.7.0", "itoa", "ryu", "serde", @@ -3133,14 +3133,14 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] name = "socket2" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" dependencies = [ "libc", "windows-sys 0.52.0", @@ -3203,7 +3203,7 @@ dependencies = [ "educe", "either", "futures", - "indexmap 2.6.0", + "indexmap 2.7.0", "json-patch", "k8s-openapi", "kube", @@ -3239,7 +3239,7 @@ dependencies = [ "proc-macro2", "quote", "stackable-operator", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -3269,22 +3269,23 @@ dependencies = [ "snafu 0.8.5", "stackable-webhook", "tokio", - "tower 0.5.1", + "tower 0.5.2", "tracing", + "tracing-appender", "tracing-opentelemetry", "tracing-subscriber", ] [[package]] name = "stackable-versioned" -version = "0.4.1" +version = "0.5.0" dependencies = [ "stackable-versioned-macros", ] [[package]] name = "stackable-versioned-macros" -version = "0.4.1" +version = "0.5.0" dependencies = [ "convert_case", "darling", @@ -3304,7 +3305,7 @@ dependencies = [ "serde_yaml", "snafu 0.8.5", "stackable-versioned", - "syn 2.0.89", + "syn 2.0.90", "trybuild", ] @@ -3314,7 +3315,7 @@ version = "0.3.1" dependencies = [ "axum 0.7.9", "futures-util", - "hyper 1.5.1", + "hyper 1.5.2", "hyper-util", "k8s-openapi", "kube", @@ -3326,7 +3327,7 @@ dependencies = [ "stackable-telemetry", "tokio", "tokio-rustls", - "tower 0.5.1", + "tower 0.5.2", "tower-http", "tracing", "tracing-opentelemetry", @@ -3357,7 +3358,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -3379,9 +3380,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.89" +version = "2.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d46482f1c1c87acd84dea20c1bf5ebff4c757009ed6bf19cfd36fb10e92c4e" +checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" dependencies = [ "proc-macro2", "quote", @@ -3408,7 +3409,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -3445,7 +3446,16 @@ version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f5383f3e0071702bf93ab5ee99b52d26936be9dedd9413067cbdcddcb6141a" +dependencies = [ + "thiserror-impl 2.0.8", ] [[package]] @@ -3456,7 +3466,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", +] + +[[package]] +name = "thiserror-impl" +version = "2.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f357fcec90b3caef6623a099691be676d033b40a058ac95d2a6ade6fa0c943" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.90", ] [[package]] @@ -3493,9 +3514,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.36" +version = "0.3.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" dependencies = [ "deranged", "itoa", @@ -3514,9 +3535,9 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" dependencies = [ "num-conv", "time-core", @@ -3550,14 +3571,14 @@ checksum = "8d9ef545650e79f30233c0003bcc2504d7efac6dad25fca40744de773fe2049c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] name = "tokio" -version = "1.41.1" +version = "1.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" +checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" dependencies = [ "backtrace", "bytes", @@ -3588,25 +3609,24 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] name = "tokio-rustls" -version = "0.26.0" +version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" +checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" dependencies = [ "rustls", - "rustls-pki-types", "tokio", ] [[package]] name = "tokio-stream" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" dependencies = [ "futures-core", "pin-project-lite", @@ -3615,9 +3635,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.12" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" dependencies = [ "bytes", "futures-core", @@ -3654,7 +3674,7 @@ version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ - "indexmap 2.6.0", + "indexmap 2.7.0", "serde", "serde_spanned", "toml_datetime", @@ -3676,7 +3696,7 @@ dependencies = [ "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.31", + "hyper 0.14.32", "hyper-timeout 0.4.1", "percent-encoding", "pin-project", @@ -3711,14 +3731,14 @@ dependencies = [ [[package]] name = "tower" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2873938d487c3cfb9aed7546dc9f2711d867c9f90c46b889989a2cb84eba6b4f" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", "futures-util", "pin-project-lite", - "sync_wrapper 0.1.2", + "sync_wrapper 1.0.2", "tokio", "tokio-util", "tower-layer", @@ -3735,7 +3755,7 @@ dependencies = [ "base64 0.22.1", "bitflags 2.6.0", "bytes", - "http 1.1.0", + "http 1.2.0", "http-body 1.0.1", "mime", "pin-project-lite", @@ -3775,7 +3795,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" dependencies = [ "crossbeam-channel", - "thiserror", + "thiserror 1.0.69", "time", "tracing-subscriber", ] @@ -3788,7 +3808,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -3832,9 +3852,9 @@ dependencies = [ [[package]] name = "tracing-serde" -version = "0.1.3" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1" +checksum = "704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1" dependencies = [ "serde", "tracing-core", @@ -3842,9 +3862,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.18" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" dependencies = [ "matchers", "nu-ansi-term", @@ -3993,9 +4013,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.95" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" +checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" dependencies = [ "cfg-if", "once_cell", @@ -4004,24 +4024,23 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.95" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" +checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.95" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" +checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -4029,22 +4048,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.95" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" +checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.95" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" +checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" [[package]] name = "web-time" @@ -4218,9 +4237,9 @@ dependencies = [ [[package]] name = "xml-rs" -version = "0.8.23" +version = "0.8.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af310deaae937e48a26602b730250b4949e125f468f11e6990be3e5304ddd96f" +checksum = "ea8b391c9a790b496184c29f7f93b9ed5b16abb306c05415b68bcc16e4d06432" [[package]] name = "yoke" @@ -4242,7 +4261,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", "synstructure", ] @@ -4264,7 +4283,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -4284,7 +4303,7 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", "synstructure", ] @@ -4305,7 +4324,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] [[package]] @@ -4327,5 +4346,5 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.90", ] diff --git a/crates/stackable-telemetry/Cargo.toml b/crates/stackable-telemetry/Cargo.toml index 7d1c5d03d..605459629 100644 --- a/crates/stackable-telemetry/Cargo.toml +++ b/crates/stackable-telemetry/Cargo.toml @@ -19,6 +19,7 @@ snafu.workspace = true tokio.workspace = true tower.workspace = true tracing.workspace = true +tracing-appender.workspace = true tracing-opentelemetry.workspace = true tracing-subscriber = { workspace = true, features = ["env-filter"] } diff --git a/crates/stackable-telemetry/src/tracing/mod.rs b/crates/stackable-telemetry/src/tracing/mod.rs index 43c943599..b750166aa 100644 --- a/crates/stackable-telemetry/src/tracing/mod.rs +++ b/crates/stackable-telemetry/src/tracing/mod.rs @@ -1,5 +1,5 @@ //! This module contains functionality to initialise tracing Subscribers for -//! console output, and OpenTelemetry OTLP export for traces and logs. +//! console output, file output and OpenTelemetry OTLP export for traces and logs. //! //! It is intended to be used by the Stackable Data Platform operators and //! webhooks, but it should be generic enough to be used in any application. @@ -16,9 +16,10 @@ use opentelemetry_sdk::{ use opentelemetry_semantic_conventions::resource; use snafu::{ResultExt as _, Snafu}; use tracing::subscriber::SetGlobalDefaultError; +use tracing_appender::rolling::{RollingFileAppender, Rotation}; use tracing_subscriber::{filter::Directive, layer::SubscriberExt, EnvFilter, Layer, Registry}; -use settings::{ConsoleLogSettings, OtlpLogSettings, OtlpTraceSettings}; +use settings::{ConsoleLogSettings, FileLogSettings, OtlpLogSettings, OtlpTraceSettings}; pub mod settings; @@ -151,6 +152,7 @@ pub enum Error { pub struct Tracing { service_name: &'static str, console_log_settings: ConsoleLogSettings, + file_log_settings: FileLogSettings, otlp_log_settings: OtlpLogSettings, otlp_trace_settings: OtlpTraceSettings, logger_provider: Option, @@ -181,6 +183,29 @@ impl Tracing { layers.push(console_output_layer.boxed()); } + if self.file_log_settings.enabled { + let env_filter_layer = env_filter_builder( + self.file_log_settings.common_settings.environment_variable, + self.file_log_settings.default_level, + ); + + let file_appender = RollingFileAppender::builder() + .rotation(Rotation::HOURLY) + .filename_prefix(self.service_name.to_string()) + .filename_suffix("tracing-rs.json") + .max_log_files(6) + .build(&self.file_log_settings.file_log_dir) + .expect("failed to initialize rolling file appender"); + + layers.push( + tracing_subscriber::fmt::layer() + .json() + .with_writer(file_appender) + .with_filter(env_filter_layer) + .boxed(), + ); + } + if self.otlp_log_settings.enabled { let env_filter_layer = env_filter_builder( self.otlp_log_settings.environment_variable, @@ -320,12 +345,6 @@ mod builder_state { #[derive(Default)] pub struct PreServiceName; - /// The state before the [`EnvFilter`][1] environment variable name is set. - /// - /// [1]: tracing_subscriber::filter::EnvFilter - #[derive(Default)] - pub struct PreEnvVar; - /// The state that allows you to configure the supported [`Subscriber`][1] /// [`Layer`][2]. /// @@ -349,6 +368,7 @@ pub struct TracingBuilder { console_log_settings: ConsoleLogSettings, otlp_log_settings: OtlpLogSettings, otlp_trace_settings: OtlpTraceSettings, + file_log_settings: FileLogSettings, /// Allow the generic to be used (needed for impls). _marker: std::marker::PhantomData, @@ -381,11 +401,31 @@ impl TracingBuilder { console_log_settings, otlp_log_settings: self.otlp_log_settings, otlp_trace_settings: self.otlp_trace_settings, + file_log_settings: self.file_log_settings, _marker: self._marker, } } - /// Enable the OTLP logging subscriber and set the default [`LevelFilter`][1] + /// Enable the file output tracing subscriber and set the default + /// [`LevelFilter`][1] which is overridable through the given environment + /// variable. + /// + /// [1]: tracing_subscriber::filter::LevelFilter + pub fn with_file_output( + self, + file_log_settings: FileLogSettings, + ) -> TracingBuilder { + TracingBuilder { + service_name: self.service_name, + console_log_settings: self.console_log_settings, + file_log_settings, + otlp_log_settings: self.otlp_log_settings, + otlp_trace_settings: self.otlp_trace_settings, + _marker: self._marker, + } + } + + /// Enable the OTLP logging subscriber and set the default [`LevelFilter`] /// which is overridable through the given environment variable. /// /// You can configure the OTLP log exports through the variables defined @@ -401,6 +441,7 @@ impl TracingBuilder { console_log_settings: self.console_log_settings, otlp_log_settings, otlp_trace_settings: self.otlp_trace_settings, + file_log_settings: self.file_log_settings, _marker: self._marker, } } @@ -421,6 +462,7 @@ impl TracingBuilder { console_log_settings: self.console_log_settings, otlp_log_settings: self.otlp_log_settings, otlp_trace_settings, + file_log_settings: self.file_log_settings, _marker: self._marker, } } @@ -437,6 +479,7 @@ impl TracingBuilder { console_log_settings: self.console_log_settings, otlp_log_settings: self.otlp_log_settings, otlp_trace_settings: self.otlp_trace_settings, + file_log_settings: self.file_log_settings, logger_provider: None, } } @@ -452,6 +495,8 @@ fn env_filter_builder(env_var: &str, default_directive: impl Into) -> #[cfg(test)] mod test { + use std::path::PathBuf; + use settings::{Build as _, Settings}; use tracing::level_filters::LevelFilter; @@ -510,6 +555,15 @@ mod test { .enabled(true) .build(), ) + .with_file_output( + Settings::builder() + .with_environment_variable("ABC_FILE") + .with_default_level(LevelFilter::INFO) + .enabled(true) + .file_log_settings_builder() + .with_file_log_dir(String::from("/abc_file_dir")) + .build(), + ) .with_otlp_log_exporter( Settings::builder() .with_environment_variable("ABC_OTLP_LOG") @@ -537,6 +591,17 @@ mod test { log_format: Default::default() } ); + assert_eq!( + trace_guard.file_log_settings, + FileLogSettings { + common_settings: Settings { + enabled: true, + environment_variable: "ABC_FILE", + default_level: LevelFilter::INFO + }, + file_log_dir: PathBuf::from("/abc_file_dir") + } + ); assert_eq!( trace_guard.otlp_log_settings, OtlpLogSettings { diff --git a/crates/stackable-telemetry/src/tracing/settings/file_log.rs b/crates/stackable-telemetry/src/tracing/settings/file_log.rs new file mode 100644 index 000000000..57ee9e45e --- /dev/null +++ b/crates/stackable-telemetry/src/tracing/settings/file_log.rs @@ -0,0 +1,155 @@ +//! File Log Subscriber Settings. + +use std::{ops::Deref, path::PathBuf}; + +use super::{Build, Settings, SettingsBuilder}; + +/// Configure specific settings for the File Log subscriber. +#[derive(Debug, Default, PartialEq)] +pub struct FileLogSettings { + /// Common subscriber settings that apply to the File Log Subscriber. + pub common_settings: Settings, + + /// Path to directory for log files. + pub file_log_dir: PathBuf, +} + +impl Deref for FileLogSettings { + type Target = Settings; + + fn deref(&self) -> &Self::Target { + &self.common_settings + } +} + +/// This trait is only used for the typestate builder and cannot be implemented +/// outside of this crate. +/// +/// The only reason it has pub visibility is because it needs to be at least as +/// visible as the types that use it. +#[doc(hidden)] +pub trait BuilderState: private::Sealed {} + +/// This private module holds the [`Sealed`][1] trait that is used by the +/// [`BuilderState`], so that it cannot be implemented outside of this crate. +/// +/// We impl Sealed for any types that will use the trait that we want to +/// restrict impls on. In this case, the [`BuilderState`] trait. +/// +/// [1]: private::Sealed +#[doc(hidden)] +mod private { + use super::*; + + pub trait Sealed {} + + impl Sealed for builder_state::PreLogDir {} + impl Sealed for builder_state::Config {} +} + +/// This module holds the possible states that the builder is in. +/// +/// Each state will implement [`BuilderState`] (with no methods), and the +/// Builder struct ([`TracingBuilder`]) itself will be implemented with +/// each state as a generic parameter. +/// This allows only the methods to be called when the builder is in the +/// applicable state. +#[doc(hidden)] +pub mod builder_state { + /// The initial state, before the log directory path is set. + #[derive(Default)] + pub struct PreLogDir; + + /// The state that allows you to configure the supported [`Subscriber`][1] + /// [`Layer`][2]. + /// + /// [1]: tracing::Subscriber + /// [2]: tracing_subscriber::layer::Layer + #[derive(Default)] + pub struct Config; +} + +// Make the states usable +#[doc(hidden)] +impl BuilderState for builder_state::PreLogDir {} + +#[doc(hidden)] +impl BuilderState for builder_state::Config {} + +/// For building [`FileLogSettings`]. +/// +///
+/// Do not use directly, instead use the [`Settings::builder`] associated function. +///
+pub struct FileLogSettingsBuilder { + pub(crate) common_settings: Settings, + pub(crate) file_log_dir: Option, + + /// Allow the generic to be used (needed for impls). + _marker: std::marker::PhantomData, +} + +impl FileLogSettingsBuilder { + /// Set the directory for log files. + /// + /// A directory is required for using the File Log subscriber. + pub fn with_file_log_dir(self, path: String) -> FileLogSettingsBuilder { + FileLogSettingsBuilder { + common_settings: self.common_settings, + file_log_dir: Some(PathBuf::from(path)), + _marker: std::marker::PhantomData, + } + } +} + +impl FileLogSettingsBuilder { + /// Consumes self and returns a valid [`FileLogSettings`] instance. + pub fn build(self) -> FileLogSettings { + FileLogSettings { + common_settings: self.common_settings, + file_log_dir: self + .file_log_dir + .expect("file_log_dir must be configured at this point"), + } + } +} + +/// This implementation is used to turn the common settings builder into the file log specific +/// settings builder via the [`SettingsBuilder::file_log_settings_builder`] function. +impl From for FileLogSettingsBuilder { + fn from(value: SettingsBuilder) -> Self { + Self { + common_settings: value.build(), + file_log_dir: None, + _marker: std::marker::PhantomData, + } + } +} + +#[cfg(test)] +mod test { + use tracing::level_filters::LevelFilter; + + use super::*; + + #[test] + fn builds_settings() { + let expected = FileLogSettings { + common_settings: Settings { + environment_variable: "hello", + default_level: LevelFilter::DEBUG, + enabled: true, + }, + file_log_dir: PathBuf::from("/logs"), + }; + let result = Settings::builder() + .with_environment_variable("hello") + .with_default_level(LevelFilter::DEBUG) + .enabled(true) + .file_log_settings_builder() + .with_file_log_dir(String::from("/logs")) + .build(); + + assert_eq!(expected, result); + } +} diff --git a/crates/stackable-telemetry/src/tracing/settings/mod.rs b/crates/stackable-telemetry/src/tracing/settings/mod.rs index aaf71c6bb..6349b533c 100644 --- a/crates/stackable-telemetry/src/tracing/settings/mod.rs +++ b/crates/stackable-telemetry/src/tracing/settings/mod.rs @@ -5,6 +5,9 @@ use tracing::level_filters::LevelFilter; pub mod console_log; pub use console_log::*; +pub mod file_log; +pub use file_log::*; + pub mod otlp_log; pub use otlp_log::*; @@ -105,6 +108,11 @@ impl SettingsBuilder { self.into() } + /// Set specific [`FileLogSettings`]. + pub fn file_log_settings_builder(self) -> FileLogSettingsBuilder { + self.into() + } + /// Set specific [`OtlpLogSettings`]. pub fn otlp_log_settings_builder(self) -> OtlpLogSettingsBuilder { self.into() From 0e16812883f0abb8236b088eab0cd40806e78118 Mon Sep 17 00:00:00 2001 From: xeniape Date: Thu, 19 Dec 2024 15:03:02 +0100 Subject: [PATCH 2/8] add changelog entry --- crates/stackable-telemetry/CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/crates/stackable-telemetry/CHANGELOG.md b/crates/stackable-telemetry/CHANGELOG.md index 889682a5a..a9e5d4b5e 100644 --- a/crates/stackable-telemetry/CHANGELOG.md +++ b/crates/stackable-telemetry/CHANGELOG.md @@ -7,6 +7,7 @@ All notable changes to this project will be documented in this file. ### Added - Introduce common `Settings` and subscriber specific settings ([#901]). +- Added support for logging to files ([#933]). ### Changed @@ -14,6 +15,7 @@ All notable changes to this project will be documented in this file. - BREAKING: Use the new subscriber settings in the `TracingBuilder` ([#901]). [#901]: https://github.com/stackabletech/operator-rs/pull/901 +[#933]: https://github.com/stackabletech/operator-rs/pull/933 ## [0.2.0] - 2024-07-10 From be484ea81fc9d1f618d7ab25edd74c00d023fb5c Mon Sep 17 00:00:00 2001 From: xeniape Date: Thu, 19 Dec 2024 15:26:15 +0100 Subject: [PATCH 3/8] adjust docs --- crates/stackable-telemetry/src/tracing/mod.rs | 2 +- .../src/tracing/settings/file_log.rs | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/crates/stackable-telemetry/src/tracing/mod.rs b/crates/stackable-telemetry/src/tracing/mod.rs index b750166aa..6216cb027 100644 --- a/crates/stackable-telemetry/src/tracing/mod.rs +++ b/crates/stackable-telemetry/src/tracing/mod.rs @@ -425,7 +425,7 @@ impl TracingBuilder { } } - /// Enable the OTLP logging subscriber and set the default [`LevelFilter`] + /// Enable the OTLP logging subscriber and set the default [`LevelFilter`][1] /// which is overridable through the given environment variable. /// /// You can configure the OTLP log exports through the variables defined diff --git a/crates/stackable-telemetry/src/tracing/settings/file_log.rs b/crates/stackable-telemetry/src/tracing/settings/file_log.rs index 57ee9e45e..99d998fae 100644 --- a/crates/stackable-telemetry/src/tracing/settings/file_log.rs +++ b/crates/stackable-telemetry/src/tracing/settings/file_log.rs @@ -50,21 +50,21 @@ mod private { /// This module holds the possible states that the builder is in. /// /// Each state will implement [`BuilderState`] (with no methods), and the -/// Builder struct ([`TracingBuilder`]) itself will be implemented with +/// Builder struct ([`FileLogSettingsBuilder`][1]) itself will be implemented with /// each state as a generic parameter. /// This allows only the methods to be called when the builder is in the /// applicable state. +/// +/// [1]: FileLogSettingsBuilder #[doc(hidden)] pub mod builder_state { /// The initial state, before the log directory path is set. #[derive(Default)] pub struct PreLogDir; - /// The state that allows you to configure the supported [`Subscriber`][1] - /// [`Layer`][2]. + /// The state that allows you to configure the [`FileLogSettings`][1]. /// - /// [1]: tracing::Subscriber - /// [2]: tracing_subscriber::layer::Layer + /// [1]: FileLogSettings #[derive(Default)] pub struct Config; } From ca0ae2061e5273314a30e06c4202b12e34f018fd Mon Sep 17 00:00:00 2001 From: xeniape Date: Thu, 19 Dec 2024 15:44:48 +0100 Subject: [PATCH 4/8] adjust docs --- crates/stackable-telemetry/src/tracing/settings/file_log.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/stackable-telemetry/src/tracing/settings/file_log.rs b/crates/stackable-telemetry/src/tracing/settings/file_log.rs index 99d998fae..be0c4f97c 100644 --- a/crates/stackable-telemetry/src/tracing/settings/file_log.rs +++ b/crates/stackable-telemetry/src/tracing/settings/file_log.rs @@ -55,7 +55,7 @@ mod private { /// This allows only the methods to be called when the builder is in the /// applicable state. /// -/// [1]: FileLogSettingsBuilder +/// [1]: super::FileLogSettingsBuilder #[doc(hidden)] pub mod builder_state { /// The initial state, before the log directory path is set. @@ -64,7 +64,7 @@ pub mod builder_state { /// The state that allows you to configure the [`FileLogSettings`][1]. /// - /// [1]: FileLogSettings + /// [1]: super::FileLogSettings #[derive(Default)] pub struct Config; } From bfe89a7609ae8092a48c018c33639b7ce6ab27f4 Mon Sep 17 00:00:00 2001 From: xeniape Date: Thu, 16 Jan 2025 10:14:10 +0100 Subject: [PATCH 5/8] error handling, simplify filelogsettings creation --- crates/stackable-telemetry/CHANGELOG.md | 2 +- crates/stackable-telemetry/src/tracing/mod.rs | 12 ++- .../src/tracing/settings/file_log.rs | 97 ++----------------- .../src/tracing/settings/mod.rs | 12 ++- 4 files changed, 24 insertions(+), 99 deletions(-) diff --git a/crates/stackable-telemetry/CHANGELOG.md b/crates/stackable-telemetry/CHANGELOG.md index a9e5d4b5e..f2162a8d3 100644 --- a/crates/stackable-telemetry/CHANGELOG.md +++ b/crates/stackable-telemetry/CHANGELOG.md @@ -7,7 +7,7 @@ All notable changes to this project will be documented in this file. ### Added - Introduce common `Settings` and subscriber specific settings ([#901]). -- Added support for logging to files ([#933]). +- Add support for logging to files ([#933]). ### Changed diff --git a/crates/stackable-telemetry/src/tracing/mod.rs b/crates/stackable-telemetry/src/tracing/mod.rs index 6216cb027..97823963d 100644 --- a/crates/stackable-telemetry/src/tracing/mod.rs +++ b/crates/stackable-telemetry/src/tracing/mod.rs @@ -1,5 +1,5 @@ //! This module contains functionality to initialise tracing Subscribers for -//! console output, file output and OpenTelemetry OTLP export for traces and logs. +//! console output, file output, and OpenTelemetry OTLP export for traces and logs. //! //! It is intended to be used by the Stackable Data Platform operators and //! webhooks, but it should be generic enough to be used in any application. @@ -16,7 +16,7 @@ use opentelemetry_sdk::{ use opentelemetry_semantic_conventions::resource; use snafu::{ResultExt as _, Snafu}; use tracing::subscriber::SetGlobalDefaultError; -use tracing_appender::rolling::{RollingFileAppender, Rotation}; +use tracing_appender::rolling::{InitError, RollingFileAppender, Rotation}; use tracing_subscriber::{filter::Directive, layer::SubscriberExt, EnvFilter, Layer, Registry}; use settings::{ConsoleLogSettings, FileLogSettings, OtlpLogSettings, OtlpTraceSettings}; @@ -39,6 +39,9 @@ pub enum Error { #[snafu(display("unable to set the global default subscriber"))] SetGlobalDefaultSubscriber { source: SetGlobalDefaultError }, + + #[snafu(display("failed to initialize rolling file appender"))] + InitRollingFileAppender { source: InitError }, } /// Easily initialize a set of preconfigured [`Subscriber`][1] layers. @@ -195,7 +198,7 @@ impl Tracing { .filename_suffix("tracing-rs.json") .max_log_files(6) .build(&self.file_log_settings.file_log_dir) - .expect("failed to initialize rolling file appender"); + .context(InitRollingFileAppenderSnafu)?; layers.push( tracing_subscriber::fmt::layer() @@ -560,8 +563,7 @@ mod test { .with_environment_variable("ABC_FILE") .with_default_level(LevelFilter::INFO) .enabled(true) - .file_log_settings_builder() - .with_file_log_dir(String::from("/abc_file_dir")) + .file_log_settings_builder(String::from("/abc_file_dir")) .build(), ) .with_otlp_log_exporter( diff --git a/crates/stackable-telemetry/src/tracing/settings/file_log.rs b/crates/stackable-telemetry/src/tracing/settings/file_log.rs index be0c4f97c..8daaba415 100644 --- a/crates/stackable-telemetry/src/tracing/settings/file_log.rs +++ b/crates/stackable-telemetry/src/tracing/settings/file_log.rs @@ -2,7 +2,7 @@ use std::{ops::Deref, path::PathBuf}; -use super::{Build, Settings, SettingsBuilder}; +use super::Settings; /// Configure specific settings for the File Log subscriber. #[derive(Debug, Default, PartialEq)] @@ -22,106 +22,22 @@ impl Deref for FileLogSettings { } } -/// This trait is only used for the typestate builder and cannot be implemented -/// outside of this crate. -/// -/// The only reason it has pub visibility is because it needs to be at least as -/// visible as the types that use it. -#[doc(hidden)] -pub trait BuilderState: private::Sealed {} - -/// This private module holds the [`Sealed`][1] trait that is used by the -/// [`BuilderState`], so that it cannot be implemented outside of this crate. -/// -/// We impl Sealed for any types that will use the trait that we want to -/// restrict impls on. In this case, the [`BuilderState`] trait. -/// -/// [1]: private::Sealed -#[doc(hidden)] -mod private { - use super::*; - - pub trait Sealed {} - - impl Sealed for builder_state::PreLogDir {} - impl Sealed for builder_state::Config {} -} - -/// This module holds the possible states that the builder is in. -/// -/// Each state will implement [`BuilderState`] (with no methods), and the -/// Builder struct ([`FileLogSettingsBuilder`][1]) itself will be implemented with -/// each state as a generic parameter. -/// This allows only the methods to be called when the builder is in the -/// applicable state. -/// -/// [1]: super::FileLogSettingsBuilder -#[doc(hidden)] -pub mod builder_state { - /// The initial state, before the log directory path is set. - #[derive(Default)] - pub struct PreLogDir; - - /// The state that allows you to configure the [`FileLogSettings`][1]. - /// - /// [1]: super::FileLogSettings - #[derive(Default)] - pub struct Config; -} - -// Make the states usable -#[doc(hidden)] -impl BuilderState for builder_state::PreLogDir {} - -#[doc(hidden)] -impl BuilderState for builder_state::Config {} - /// For building [`FileLogSettings`]. /// ///
/// Do not use directly, instead use the [`Settings::builder`] associated function. ///
-pub struct FileLogSettingsBuilder { +pub struct FileLogSettingsBuilder { pub(crate) common_settings: Settings, - pub(crate) file_log_dir: Option, - - /// Allow the generic to be used (needed for impls). - _marker: std::marker::PhantomData, + pub(crate) file_log_dir: PathBuf, } -impl FileLogSettingsBuilder { - /// Set the directory for log files. - /// - /// A directory is required for using the File Log subscriber. - pub fn with_file_log_dir(self, path: String) -> FileLogSettingsBuilder { - FileLogSettingsBuilder { - common_settings: self.common_settings, - file_log_dir: Some(PathBuf::from(path)), - _marker: std::marker::PhantomData, - } - } -} - -impl FileLogSettingsBuilder { +impl FileLogSettingsBuilder { /// Consumes self and returns a valid [`FileLogSettings`] instance. pub fn build(self) -> FileLogSettings { FileLogSettings { common_settings: self.common_settings, - file_log_dir: self - .file_log_dir - .expect("file_log_dir must be configured at this point"), - } - } -} - -/// This implementation is used to turn the common settings builder into the file log specific -/// settings builder via the [`SettingsBuilder::file_log_settings_builder`] function. -impl From for FileLogSettingsBuilder { - fn from(value: SettingsBuilder) -> Self { - Self { - common_settings: value.build(), - file_log_dir: None, - _marker: std::marker::PhantomData, + file_log_dir: self.file_log_dir, } } } @@ -146,8 +62,7 @@ mod test { .with_environment_variable("hello") .with_default_level(LevelFilter::DEBUG) .enabled(true) - .file_log_settings_builder() - .with_file_log_dir(String::from("/logs")) + .file_log_settings_builder(String::from("/logs")) .build(); assert_eq!(expected, result); diff --git a/crates/stackable-telemetry/src/tracing/settings/mod.rs b/crates/stackable-telemetry/src/tracing/settings/mod.rs index 6349b533c..94915ab01 100644 --- a/crates/stackable-telemetry/src/tracing/settings/mod.rs +++ b/crates/stackable-telemetry/src/tracing/settings/mod.rs @@ -1,5 +1,7 @@ //! Subscriber settings. +use std::path::Path; + use tracing::level_filters::LevelFilter; pub mod console_log; @@ -109,8 +111,14 @@ impl SettingsBuilder { } /// Set specific [`FileLogSettings`]. - pub fn file_log_settings_builder(self) -> FileLogSettingsBuilder { - self.into() + pub fn file_log_settings_builder

(self, path: P) -> FileLogSettingsBuilder + where + P: AsRef, + { + FileLogSettingsBuilder { + common_settings: self.build(), + file_log_dir: path.as_ref().to_path_buf(), + } } /// Set specific [`OtlpLogSettings`]. From 6bb857b7d73e2c7f9be1ba8d1680e5dc53aa6e77 Mon Sep 17 00:00:00 2001 From: Xenia Date: Fri, 17 Jan 2025 10:18:15 +0100 Subject: [PATCH 6/8] Apply suggestions from code review Co-authored-by: Nick <10092581+NickLarsenNZ@users.noreply.github.com> --- crates/stackable-telemetry/src/tracing/mod.rs | 2 +- crates/stackable-telemetry/src/tracing/settings/file_log.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/stackable-telemetry/src/tracing/mod.rs b/crates/stackable-telemetry/src/tracing/mod.rs index 97823963d..88a4b67a5 100644 --- a/crates/stackable-telemetry/src/tracing/mod.rs +++ b/crates/stackable-telemetry/src/tracing/mod.rs @@ -563,7 +563,7 @@ mod test { .with_environment_variable("ABC_FILE") .with_default_level(LevelFilter::INFO) .enabled(true) - .file_log_settings_builder(String::from("/abc_file_dir")) + .file_log_settings_builder(PathBuf::from("/abc_file_dir")) .build(), ) .with_otlp_log_exporter( diff --git a/crates/stackable-telemetry/src/tracing/settings/file_log.rs b/crates/stackable-telemetry/src/tracing/settings/file_log.rs index 8daaba415..73ccbda04 100644 --- a/crates/stackable-telemetry/src/tracing/settings/file_log.rs +++ b/crates/stackable-telemetry/src/tracing/settings/file_log.rs @@ -62,7 +62,7 @@ mod test { .with_environment_variable("hello") .with_default_level(LevelFilter::DEBUG) .enabled(true) - .file_log_settings_builder(String::from("/logs")) + .file_log_settings_builder(PathBuf::from("/logs")) .build(); assert_eq!(expected, result); From b369fb2c3141962a6a8e5e838eb85063477cd304 Mon Sep 17 00:00:00 2001 From: xeniape Date: Fri, 17 Jan 2025 10:28:09 +0100 Subject: [PATCH 7/8] fix use statement --- crates/stackable-telemetry/src/tracing/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/stackable-telemetry/src/tracing/mod.rs b/crates/stackable-telemetry/src/tracing/mod.rs index 552f87f42..8f4907f60 100644 --- a/crates/stackable-telemetry/src/tracing/mod.rs +++ b/crates/stackable-telemetry/src/tracing/mod.rs @@ -566,7 +566,7 @@ mod test { use std::path::PathBuf; use rstest::rstest; - use settings::{Build as _, Settings}; + use settings::Settings; use tracing::level_filters::LevelFilter; use super::*; From b641f0f6d81bb0c66eecb160e8af4860fff22351 Mon Sep 17 00:00:00 2001 From: Xenia Date: Mon, 20 Jan 2025 08:43:53 +0100 Subject: [PATCH 8/8] Update crates/stackable-telemetry/src/tracing/mod.rs Co-authored-by: Techassi --- crates/stackable-telemetry/src/tracing/mod.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/stackable-telemetry/src/tracing/mod.rs b/crates/stackable-telemetry/src/tracing/mod.rs index 8f4907f60..7af9206c1 100644 --- a/crates/stackable-telemetry/src/tracing/mod.rs +++ b/crates/stackable-telemetry/src/tracing/mod.rs @@ -481,12 +481,12 @@ impl TracingBuilder { /// [1]: tracing_subscriber::filter::LevelFilter pub fn with_file_output( self, - file_log_settings: FileLogSettings, + file_log_settings: impl Into, ) -> TracingBuilder { TracingBuilder { service_name: self.service_name, console_log_settings: self.console_log_settings, - file_log_settings, + file_log_settings: file_log_settings.into(), otlp_log_settings: self.otlp_log_settings, otlp_trace_settings: self.otlp_trace_settings, _marker: self._marker,