feat: default logger changed to tracing-subscriber

Older version was using log4rs as logging subscriber, which doesn't
support tracing outputs.
This commit is contained in:
zonyitoo
2024-02-16 10:40:07 +08:00
parent 65eb758ad4
commit bde0d05858
5 changed files with 223 additions and 334 deletions

371
Cargo.lock generated
View File

@@ -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"

View File

@@ -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"

View File

@@ -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;

View File

@@ -2,6 +2,8 @@
use std::path::Path;
use log::warn;
use crate::config::LogConfig;
mod log4rs;
@@ -13,15 +15,16 @@ where
P: AsRef<Path>,
{
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);
}

View File

@@ -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<P>(path: P)
where
P: AsRef<Path>,
{
// 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();
}
}