From bde0d05858b7d3e39caa7a4f3fe8976980415336 Mon Sep 17 00:00:00 2001 From: zonyitoo Date: Fri, 16 Feb 2024 10:40:07 +0800 Subject: [PATCH] feat: default logger changed to tracing-subscriber Older version was using log4rs as logging subscriber, which doesn't support tracing outputs. --- Cargo.lock | 371 ++++++++++++++++------------------------- Cargo.toml | 15 +- src/logging/log4rs.rs | 1 + src/logging/mod.rs | 13 +- src/logging/tracing.rs | 157 +++++++---------- 5 files changed, 223 insertions(+), 334 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 474ff2ca..b875aeee 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -29,9 +29,9 @@ dependencies = [ [[package]] name = "aes" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" dependencies = [ "cfg-if", "cipher", @@ -171,7 +171,7 @@ checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.49", ] [[package]] @@ -274,14 +274,14 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.49", ] [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "d32a994c2b3ca201d9b263612a374263f05e7adde37c4707f693dcd375076d1f" [[package]] name = "byte_string" @@ -331,12 +331,6 @@ dependencies = [ "cipher", ] -[[package]] -name = "camino" -version = "1.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c59e92b5a388f549b863a7bea62612c09f24c8393560709a54558a9abdfb3b9c" - [[package]] name = "cc" version = "1.0.83" @@ -390,15 +384,13 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.33" +version = "0.4.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f13690e35a5e4ace198e7beea2895d29f3a9cc55015fcebe6336bd2010af9eb" +checksum = "5bc015644b92d5890fab7489e49d21f879d5c990186827d42ec511919404f38b" dependencies = [ "android-tzdata", "iana-time-zone", - "js-sys", "num-traits", - "wasm-bindgen", "windows-targets 0.52.0", ] @@ -415,18 +407,18 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.18" +version = "4.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c" +checksum = "80c21025abd42669a92efc996ef13cfb2c5c627858421ea58d5c3b331a6c134f" dependencies = [ "clap_builder", ] [[package]] name = "clap_builder" -version = "4.4.18" +version = "4.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7" +checksum = "458bf1f341769dfcf849846f65dffdf9146daa56bcd2a47cb4e1de9915567c99" dependencies = [ "anstream", "anstyle", @@ -437,9 +429,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" +checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" [[package]] name = "cmake" @@ -575,7 +567,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.49", ] [[package]] @@ -597,6 +589,15 @@ dependencies = [ "zeroize", ] +[[package]] +name = "deranged" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +dependencies = [ + "powerfmt", +] + [[package]] name = "derivative" version = "2.2.0" @@ -703,7 +704,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.49", ] [[package]] @@ -718,9 +719,9 @@ dependencies = [ [[package]] name = "env_logger" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05e7cf40684ae96ade6232ed84582f40ce0a66efcd43a5117aef610534f8e0b8" +checksum = "6c012a26a7f605efc424dd53697843a72be7dc86ad2d01f7814337794a12231d" dependencies = [ "anstream", "anstyle", @@ -886,7 +887,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.49", ] [[package]] @@ -982,7 +983,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.11", - "indexmap 2.2.2", + "indexmap", "slab", "tokio", "tokio-util", @@ -1001,7 +1002,7 @@ dependencies = [ "futures-sink", "futures-util", "http 1.0.0", - "indexmap 2.2.2", + "indexmap", "slab", "tokio", "tokio-util", @@ -1045,12 +1046,6 @@ dependencies = [ "byteorder", ] -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - [[package]] name = "hashbrown" version = "0.14.3" @@ -1075,9 +1070,9 @@ checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "hermit-abi" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0c62115964e08cb8039170eb33c1d0e2388a256930279edca206fff675f82c3" +checksum = "bd5256b483761cd23699d0da46cc6fd2ee3be420bbe6d020ae4a091e70b7e9fd" [[package]] name = "hickory-proto" @@ -1363,22 +1358,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.9.3" +version = "2.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", -] - -[[package]] -name = "indexmap" -version = "2.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "824b2ae422412366ba479e8111fd301f7b5faece8149317bb81925979a53f520" +checksum = "233cf39063f058ea2caae4091bf4a3ef70a653afbc026f5c4a4135d114e3c177" dependencies = [ "equivalent", - "hashbrown 0.14.3", + "hashbrown", ] [[package]] @@ -1452,6 +1437,17 @@ dependencies = [ "ipnet", ] +[[package]] +name = "is-terminal" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" +dependencies = [ + "hermit-abi", + "libc", + "windows-sys 0.52.0", +] + [[package]] name = "itoa" version = "1.0.10" @@ -1573,12 +1569,6 @@ version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" -[[package]] -name = "literally" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0d2be3f5a0d4d5c983d1f8ecc2a87676a0875a14feb9eebf0675f7c3e2f3c35" - [[package]] name = "lock_api" version = "0.4.11" @@ -1606,9 +1596,9 @@ checksum = "a94d21414c1f4a51209ad204c1776a3d0765002c76c6abcb602a6f09f1e881c7" [[package]] name = "log4rs" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d36ca1786d9e79b8193a68d480a0907b612f109537115c6ff655a3a1967533fd" +checksum = "0816135ae15bd0391cf284eab37e6e3ee0a6ee63d2ceeb659862bd8d0a984ca6" dependencies = [ "anyhow", "arc-swap", @@ -1619,11 +1609,13 @@ dependencies = [ "libc", "log", "log-mdc", + "once_cell", "parking_lot", + "rand", "serde", "serde-value", "serde_json", - "serde_yaml 0.8.26", + "serde_yaml", "thiserror", "thread-id", "typemap-ors", @@ -1657,6 +1649,15 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ffbee8634e0d45d258acb448e7eaab3fce7a0a467395d4d9f228e3c1f01fb2e4" +[[package]] +name = "matchers" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +dependencies = [ + "regex-automata 0.1.10", +] + [[package]] name = "md-5" version = "0.10.6" @@ -1768,10 +1769,16 @@ dependencies = [ ] [[package]] -name = "num-traits" -version = "0.2.17" +name = "num-conv" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-traits" +version = "0.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" dependencies = [ "autocfg", ] @@ -1788,9 +1795,9 @@ dependencies = [ [[package]] name = "num_threads" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" +checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" dependencies = [ "libc", ] @@ -1839,7 +1846,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.49", ] [[package]] @@ -1850,9 +1857,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-src" -version = "300.2.2+3.2.1" +version = "300.2.3+3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bbfad0063610ac26ee79f7484739e2b07555a75c42453b89263830b5c8103bc" +checksum = "5cff92b6f71555b61bb9315f7c64da3ca43d87531622120fea0195fc761b4843" dependencies = [ "cc", ] @@ -1935,24 +1942,6 @@ dependencies = [ "windows-targets 0.48.5", ] -[[package]] -name = "path-absolutize" -version = "3.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4af381fe79fa195b4909485d99f73a80792331df0625188e707854f0b3383f5" -dependencies = [ - "path-dedot", -] - -[[package]] -name = "path-dedot" -version = "3.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07ba0ad7e047712414213ff67533e6dd477af0a4e1d14fb52343e53d30ea9397" -dependencies = [ - "once_cell", -] - [[package]] name = "percent-encoding" version = "2.3.1" @@ -1990,7 +1979,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.49", ] [[package]] @@ -2021,7 +2010,7 @@ checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.49", ] [[package]] @@ -2048,9 +2037,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.29" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2900ede94e305130c13ddd391e0ab7cbaeb783945ae07a279c268cb05109c6cb" +checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "poly1305" @@ -2075,6 +2064,12 @@ dependencies = [ "universal-hash", ] +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "ppv-lite86" version = "0.2.17" @@ -2249,8 +2244,17 @@ checksum = "b62dbe01f0b06f9d8dc7d49e05a0785f153b00b2c227856282f671e0318c9b15" dependencies = [ "aho-corasick", "memchr", - "regex-automata", - "regex-syntax", + "regex-automata 0.4.5", + "regex-syntax 0.8.2", +] + +[[package]] +name = "regex-automata" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" +dependencies = [ + "regex-syntax 0.6.29", ] [[package]] @@ -2261,9 +2265,15 @@ checksum = "5bb987efffd3c6d0d8f5f89510bb458559eab11e4f869acb20bf845e016259cd" dependencies = [ "aho-corasick", "memchr", - "regex-syntax", + "regex-syntax 0.8.2", ] +[[package]] +name = "regex-syntax" +version = "0.6.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" + [[package]] name = "regex-syntax" version = "0.8.2" @@ -2484,7 +2494,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f1fb85efa936c42c6d5fc28d2629bb51e4b2f4b8a5211e297d599cc5a093792" dependencies = [ "openssl-probe", - "rustls-pemfile 2.0.0", + "rustls-pemfile 2.1.0", "rustls-pki-types", "schannel", "security-framework", @@ -2501,9 +2511,9 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35e4980fa29e4c4b212ffb3db068a564cbf560e51d3944b7c88bd8bf5bec64f4" +checksum = "3c333bb734fcdedcea57de1602543590f545f127dc8b533324318fd492c5c70b" dependencies = [ "base64", "rustls-pki-types", @@ -2511,9 +2521,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a716eb65e3158e90e17cd93d855216e27bde02745ab842f2cab4a39dba1bacf" +checksum = "048a63e5b3ac996d78d402940b5fa47973d2d080c6c6fffa1d0f19c4445310b7" [[package]] name = "rustls-webpki" @@ -2536,12 +2546,6 @@ dependencies = [ "untrusted 0.9.0", ] -[[package]] -name = "rustversion" -version = "1.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" - [[package]] name = "ryu" version = "1.0.16" @@ -2655,7 +2659,7 @@ checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.49", ] [[package]] @@ -2681,25 +2685,13 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_yaml" -version = "0.8.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "578a7433b776b56a35785ed5ce9a7e777ac0598aac5a6dd1b4b18a307c7fc71b" -dependencies = [ - "indexmap 1.9.3", - "ryu", - "serde", - "yaml-rust", -] - [[package]] name = "serde_yaml" version = "0.9.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adf8a49373e98a4c5f0ceb5d05aa7c648d75f63774981ed95b7c7443bbd50c6e" dependencies = [ - "indexmap 2.2.2", + "indexmap", "itoa", "ryu", "serde", @@ -2796,7 +2788,7 @@ dependencies = [ [[package]] name = "shadowsocks-rust" -version = "1.18.0" +version = "1.18.1" dependencies = [ "base64", "build-time", @@ -2809,6 +2801,7 @@ dependencies = [ "env_logger", "futures", "ipnet", + "is-terminal", "jemallocator", "json5", "libc", @@ -2822,15 +2815,15 @@ dependencies = [ "rpassword", "rpmalloc", "serde", - "serde_yaml 0.9.31", "shadowsocks-service", "snmalloc-rs", "sysexits", "tcmalloc", "thiserror", + "time", "tokio", - "trace4rs", "tracing", + "tracing-subscriber", "windows-service", "xdg", ] @@ -2936,17 +2929,6 @@ version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6ecd384b10a64542d77071bd64bd7b231f4ed5940fba55e98c3de13824cf3d7" -[[package]] -name = "smart-default" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "133659a15339456eeeb07572eb02a91c91e9815e9cbc89566944d2c8d3efdbf6" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "smoltcp" version = "0.11.0" @@ -3023,9 +3005,9 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "strsim" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +checksum = "5ee073c9e4cd00e28217186dbe12796d692868f432bf2e97ee73bed0c56dfa01" [[package]] name = "subtle" @@ -3046,9 +3028,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.48" +version = "2.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" +checksum = "915aea9e586f80826ee59f8453c1101f9d1c4b3964cd2460185ee8e299ada496" dependencies = [ "proc-macro2", "quote", @@ -3127,22 +3109,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.56" +version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" +checksum = "1e45bcbe8ed29775f228095caf2cd67af7a4ccf756ebff23a306bf3e8b47b24b" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.56" +version = "1.0.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" +checksum = "a953cb265bef375dae3de6663da4d3804eee9682ea80d8e2542529b73c531c81" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.49", ] [[package]] @@ -3167,13 +3149,16 @@ dependencies = [ [[package]] name = "time" -version = "0.3.20" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890" +checksum = "c8248b6521bb14bc45b4067159b9b6ad792e2d6d754d6c41fb50e29fefe38749" dependencies = [ + "deranged", "itoa", "libc", + "num-conv", "num_threads", + "powerfmt", "serde", "time-core", "time-macros", @@ -3181,16 +3166,17 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.8" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36" +checksum = "7ba3a3ef41e6672a2f0f001392bb5dcd3ff0a9992d618ca761a11c3121547774" dependencies = [ + "num-conv", "time-core", ] @@ -3236,7 +3222,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.49", ] [[package]] @@ -3307,53 +3293,6 @@ version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" -[[package]] -name = "trace4rs" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79478dd8f523a9acec48b5e71ad56dc0f3b0dcaf703da29961d31a6bdd713bf0" -dependencies = [ - "camino", - "literally", - "log", - "once_cell", - "parking_lot", - "path-absolutize", - "regex", - "rustversion", - "thiserror", - "time", - "trace4rs-config", - "trace4rs-fmtorp", - "tracing", - "tracing-log 0.1.4", - "tracing-subscriber", - "utc-offset", -] - -[[package]] -name = "trace4rs-config" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54a8eca7b495cb7659cb081820b3f410b42b9edaecb28b0d7861cff6606fc882" -dependencies = [ - "literally", - "serde", - "smart-default", - "thiserror", - "tracing", -] - -[[package]] -name = "trace4rs-fmtorp" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3bc666374e9f4d6962ba6bbf1f9d5f6a56d4a8c08c6d07985684b9078e8bf0e" -dependencies = [ - "thiserror", - "tracing-subscriber", -] - [[package]] name = "tracing" version = "0.1.40" @@ -3374,7 +3313,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.49", ] [[package]] @@ -3387,17 +3326,6 @@ dependencies = [ "valuable", ] -[[package]] -name = "tracing-log" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2" -dependencies = [ - "log", - "once_cell", - "tracing-core", -] - [[package]] name = "tracing-log" version = "0.2.0" @@ -3415,13 +3343,17 @@ version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" dependencies = [ + "matchers", "nu-ansi-term", + "once_cell", + "regex", "sharded-slab", "smallvec", "thread_local", "time", + "tracing", "tracing-core", - "tracing-log 0.2.0", + "tracing-log", ] [[package]] @@ -3539,18 +3471,6 @@ dependencies = [ "serde", ] -[[package]] -name = "utc-offset" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7f5187fd6893d08fecb6cdcb09badfbd5a187bf947fc12abc36c7bcb88dcd51" -dependencies = [ - "once_cell", - "parking_lot", - "thiserror", - "time", -] - [[package]] name = "utf8parse" version = "0.2.1" @@ -3621,7 +3541,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.49", "wasm-bindgen-shared", ] @@ -3655,7 +3575,7 @@ checksum = "642f325be6301eb8107a83d12a8ac6c1e1c54345a7ef1a9261962dfefda09e66" dependencies = [ "proc-macro2", "quote", - "syn 2.0.48", + "syn 2.0.49", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -3994,15 +3914,6 @@ version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "213b7324336b53d2414b2db8537e56544d981803139155afa84f76eeebb7a546" -[[package]] -name = "yaml-rust" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56c1936c4cc7a1c9ab21a1ebb602eb942ba868cbd44a99cb7cdc5892335e1c85" -dependencies = [ - "linked-hash-map", -] - [[package]] name = "zeroize" version = "1.7.0" diff --git a/Cargo.toml b/Cargo.toml index fafcbfe3..d5f8b4ac 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "shadowsocks-rust" -version = "1.18.0" +version = "1.18.1" authors = ["Shadowsocks Contributors"] description = "shadowsocks is a fast tunnel proxy that helps you bypass firewalls." repository = "https://github.com/shadowsocks/shadowsocks-rust" @@ -96,7 +96,7 @@ dns-over-https = ["shadowsocks-service/dns-over-https"] dns-over-h3 = ["shadowsocks-service/dns-over-h3"] # Enable logging output -logging = ["log4rs", "trace4rs", "tracing", "serde_yaml"] +logging = ["log4rs", "tracing", "tracing-subscriber", "is-terminal", "time"] # Enable DNS-relay local-dns = ["local", "shadowsocks-service/local-dns"] @@ -164,14 +164,21 @@ replay-attack-detect = [ [dependencies] log = "0.4" log4rs = { version = "1.2", optional = true } -trace4rs = { version = "0.5", optional = true, features = ["serde"] } tracing = { version = "0.1", optional = true } +tracing-subscriber = { version = "0.3", optional = true, features = [ + "std", + "fmt", + "env-filter", + "time", + "local-time", +] } +is-terminal = { version = "0.4.12", optional = true } +time = { version = "0.3", optional = true } serde = { version = "1.0", features = ["derive"] } json5 = "0.4" thiserror = "1.0" base64 = "0.21" -serde_yaml = { version = "0.9", optional = true } clap = { version = "4.4", features = ["wrap_help", "suggestions"] } cfg-if = "1" diff --git a/src/logging/log4rs.rs b/src/logging/log4rs.rs index d153cc30..a0502293 100644 --- a/src/logging/log4rs.rs +++ b/src/logging/log4rs.rs @@ -20,6 +20,7 @@ where } /// Initialize logger with provided configuration +#[allow(dead_code)] pub fn init_with_config(bin_name: &str, config: &LogConfig) { let debug_level = config.level; let without_time = config.format.without_time; diff --git a/src/logging/mod.rs b/src/logging/mod.rs index cbf6b9f7..544d1ac3 100644 --- a/src/logging/mod.rs +++ b/src/logging/mod.rs @@ -2,6 +2,8 @@ use std::path::Path; +use log::warn; + use crate::config::LogConfig; mod log4rs; @@ -13,15 +15,16 @@ where P: AsRef, { log4rs::init_with_file(path); - // FIXME: 2024-02-04 Temporary disable. - // trace4rs configuration file doesn't share exactly the same value with log4rs. - // - // tracing::init_with_file(path); + + warn!( + "log4rs doesn't support tracing (https://crates.io/crates/tracing) framework, + so it would be removed in the future. Consider configure logging with RUST_LOG environment variable." + ); } /// Initialize logger with provided configuration pub fn init_with_config(bin_name: &str, config: &LogConfig) { - log4rs::init_with_config(bin_name, config); + // log4rs::init_with_config(bin_name, config); tracing::init_with_config(bin_name, config); } diff --git a/src/logging/tracing.rs b/src/logging/tracing.rs index 866a7f4a..ae1c2dc4 100644 --- a/src/logging/tracing.rs +++ b/src/logging/tracing.rs @@ -1,113 +1,80 @@ //! Logging facilities with tracing -use std::collections::HashMap; -use std::path::Path; -use std::{collections::HashSet, fs::File}; - -use trace4rs::config::{Appender as ConfigAppender, AppenderId, Format, LevelFilter, Target}; -use trace4rs::{config::Logger, Config, Handle}; +use is_terminal::IsTerminal; +use time::UtcOffset; +use tracing::level_filters::LevelFilter; +use tracing_subscriber::fmt::time::OffsetTime; +use tracing_subscriber::EnvFilter; +use tracing_subscriber::FmtSubscriber; use crate::config::LogConfig; -#[allow(dead_code)] -/// Initialize logger ([log4rs](https://crates.io/crates/log4rs)) from yaml configuration file -pub fn init_with_file

(path: P) -where - P: AsRef, -{ - // log4rs uses YAML as configuration format. - let mut fp = match File::open(path.as_ref()) { - Ok(fp) => fp, - Err(err) => { - panic!("failed to open file {}, error: {}", path.as_ref().display(), err); - } - }; - - let config: Config = match serde_yaml::from_reader(&mut fp) { - Ok(c) => c, - Err(err) => { - panic!("failed to read file {}, error: {}", path.as_ref().display(), err); - } - }; - - let handle = match Handle::try_from(&config) { - Ok(h) => h, - Err(err) => { - panic!( - "failed to initialize trace4rs Handle, config file: {}, error: {}", - path.as_ref().display(), - err - ); - } - }; - - match tracing::subscriber::set_global_default(handle.subscriber()) { - Ok(..) => {} - Err(err) => { - panic!( - "failed to initialize tracing subscriber, config file: {}, error: {}", - path.as_ref().display(), - err - ); - } - } -} - /// Initialize logger with provided configuration pub fn init_with_config(bin_name: &str, config: &LogConfig) { let debug_level = config.level; let without_time = config.format.without_time; - let mut pattern = String::new(); - if !without_time { - pattern += "{T} "; - } - pattern += "{l} [{t}] {m} {f}"; + let mut builder = FmtSubscriber::builder() + .with_level(true) + .with_timer(match OffsetTime::local_rfc_3339() { + Ok(t) => t, + Err(..) => { + // Reinit with UTC time + OffsetTime::new(UtcOffset::UTC, time::format_description::well_known::Rfc3339) + } + }); - let (l1, l2) = match debug_level { - 0 => (LevelFilter::INFO, LevelFilter::OFF), - 1 => (LevelFilter::DEBUG, LevelFilter::OFF), - 2 => (LevelFilter::TRACE, LevelFilter::OFF), - 3 => (LevelFilter::TRACE, LevelFilter::DEBUG), - _ => (LevelFilter::OFF, LevelFilter::TRACE), - }; - - let default_logger = Logger { - appenders: HashSet::from([AppenderId("console".to_owned())]), - level: l2, - format: Format::Custom(pattern.clone()), - }; - - let mut loggers = HashMap::new(); - if debug_level <= 3 { - let l1_logger = Logger { - appenders: HashSet::from([AppenderId("console".to_owned())]), - level: l1, - format: Format::Custom(pattern), - }; - loggers.insert(Target(bin_name.to_owned()), l1_logger.clone()); - loggers.insert(Target("shadowsocks_rust".to_owned()), l1_logger.clone()); - loggers.insert(Target("shadowsocks".to_owned()), l1_logger.clone()); - loggers.insert(Target("shadowsocks_service".to_owned()), l1_logger); + if std::io::stdout().is_terminal() { + builder = builder.with_ansi(true); } - let config = Config { - default: default_logger, - appenders: HashMap::from([(AppenderId("console".to_owned()), ConfigAppender::console())]), - loggers, - }; + if debug_level >= 1 { + builder = builder.with_target(true).with_thread_ids(true).with_thread_names(true); - let handle = match Handle::try_from(&config) { - Ok(h) => h, - Err(err) => { - panic!("failed to initialize trace4rs Handle, error: {}", err); + if debug_level >= 3 { + builder = builder.with_file(true).with_line_number(true); } - }; + } else { + builder = builder + .with_target(false) + .with_thread_ids(false) + .with_thread_names(false); + } - match tracing::subscriber::set_global_default(handle.subscriber()) { - Ok(..) => {} - Err(err) => { - panic!("failed to initialize tracing subscriber, error: {}", err); - } + let filter = match EnvFilter::try_from_default_env() { + Ok(f) => f, + Err(..) => match debug_level { + 0 => EnvFilter::builder() + .with_regex(true) + .with_default_directive(LevelFilter::ERROR.into()) + .parse_lossy(format!( + "warn,{}=info,shadowsocks_rust=info,shadowsocks_service=info,shadowsocks=info", + bin_name + )), + 1 => EnvFilter::builder() + .with_regex(true) + .with_default_directive(LevelFilter::ERROR.into()) + .parse_lossy(format!( + "warn,{}=debug,shadowsocks_rust=debug,shadowsocks_service=debug,shadowsocks=debug", + bin_name + )), + 2 => EnvFilter::builder() + .with_regex(true) + .with_default_directive(LevelFilter::ERROR.into()) + .parse_lossy(format!( + "warn,{}=trace,shadowsocks_rust=trace,shadowsocks_service=trace,shadowsocks=trace", + bin_name + )), + _ => EnvFilter::builder() + .with_default_directive(LevelFilter::TRACE.into()) + .parse_lossy(""), + }, + }; + let builder = builder.with_env_filter(filter); + + if without_time { + builder.without_time().init(); + } else { + builder.init(); } }