diff --git a/.gitignore b/.gitignore index 3d7bdb86f..8e8cb4a7f 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,4 @@ test /oma-fetcher-test /*.deb /completions -/man \ No newline at end of file +/man diff --git a/Cargo.lock b/Cargo.lock index e89e0d07a..c78058b5d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -69,7 +69,7 @@ version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67555e1f1ece39d737e28c8a017721287753af3f93225e4a445b29ccb0f5912c" dependencies = [ - "nom", + "nom 7.1.3", "ratatui", "simdutf8", "smallvec", @@ -82,7 +82,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0a8acea8c2f1c60f0a92a8cd26bf96ca97db56f10bbcab238bbe0cceba659ee" dependencies = [ - "nom", + "nom 7.1.3", "vte", ] @@ -147,8 +147,8 @@ name = "apt-auth-config" version = "0.4.0" dependencies = [ "rust-netrc", + "spdlog-rs", "thiserror 2.0.17", - "tracing", "url", ] @@ -355,6 +355,12 @@ dependencies = [ "syn", ] +[[package]] +name = "atomic" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c59bdb34bc650a32731b31bd8f0829cc15d24a708ee31559e0bb34f2bc320cba" + [[package]] name = "atomic-waker" version = "1.1.2" @@ -658,7 +664,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" dependencies = [ - "nom", + "nom 7.1.3", ] [[package]] @@ -906,6 +912,19 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "crossbeam" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1137cd7e7fc0fb5d3c5a8678be38ec56e819125d8d7907411fe24ccb943faca8" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-epoch", + "crossbeam-queue", + "crossbeam-utils", +] + [[package]] name = "crossbeam-channel" version = "0.5.15" @@ -934,6 +953,15 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "crossbeam-queue" +version = "0.3.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" +dependencies = [ + "crossbeam-utils", +] + [[package]] name = "crossbeam-utils" version = "0.8.21" @@ -1167,15 +1195,6 @@ dependencies = [ "num-bigint", ] -[[package]] -name = "deranged" -version = "0.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a41953f86f8a05768a6cda24def994fd2f424b04ec5c719cf89989779f199071" -dependencies = [ - "powerfmt", -] - [[package]] name = "dialoguer" version = "0.12.0" @@ -1336,6 +1355,16 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" +[[package]] +name = "erased-serde" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e004d887f51fcb9fef17317a2f3525c887d8aa3f4f50fed920816a688284a5b7" +dependencies = [ + "serde", + "typeid", +] + [[package]] name = "errno" version = "0.3.14" @@ -1811,7 +1840,7 @@ dependencies = [ "base64 0.21.7", "byteorder", "flate2", - "nom", + "nom 7.1.3", "num-traits", ] @@ -2305,6 +2334,17 @@ dependencies = [ "serde", ] +[[package]] +name = "is-terminal" +version = "0.4.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" +dependencies = [ + "hermit-abi", + "libc", + "windows-sys 0.59.0", +] + [[package]] name = "is_executable" version = "1.0.5" @@ -2776,21 +2816,21 @@ dependencies = [ ] [[package]] -name = "ntapi" -version = "0.4.1" +name = "nom" +version = "8.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" +checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405" dependencies = [ - "winapi", + "memchr", ] [[package]] -name = "nu-ansi-term" -version = "0.50.1" +name = "ntapi" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" +checksum = "e8a3895c6391c39d7fe7ebc444a87eb2991b2a0bc718fdabd071eec617fc68e4" dependencies = [ - "windows-sys 0.52.0", + "winapi", ] [[package]] @@ -2803,12 +2843,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "num-conv" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" - [[package]] name = "num-integer" version = "0.1.46" @@ -2934,6 +2968,7 @@ dependencies = [ "serde", "serde_json", "sha2", + "spdlog-rs", "strsim", "sysinfo", "tabled", @@ -2941,9 +2976,6 @@ dependencies = [ "textwrap", "tokio", "toml 0.9.7", - "tracing", - "tracing-appender", - "tracing-subscriber", ] [[package]] @@ -2976,13 +3008,13 @@ version = "0.29.1" dependencies = [ "aho-corasick", "ansi-to-tui", + "chrono", "console", "indicatif", "ratatui", + "spdlog-rs", "termbg-with-async-stdin", "textwrap", - "tracing", - "tracing-subscriber", ] [[package]] @@ -2994,8 +3026,8 @@ dependencies = [ "memchr", "rayon", "regex", + "spdlog-rs", "thiserror 2.0.17", - "tracing", "which", "winnow", "zstd", @@ -3016,9 +3048,9 @@ dependencies = [ "serde", "sha2", "snafu", + "spdlog-rs", "tokio", "tokio-util", - "tracing", ] [[package]] @@ -3030,8 +3062,8 @@ dependencies = [ "rusqlite", "serde", "serde_json", + "spdlog-rs", "thiserror 2.0.17", - "tracing", ] [[package]] @@ -3060,8 +3092,8 @@ dependencies = [ "serde", "serde_json", "snafu", + "spdlog-rs", "toml 0.9.7", - "tracing", ] [[package]] @@ -3086,11 +3118,11 @@ dependencies = [ "oma-utils", "once_cell", "serde", + "spdlog-rs", "strsim", "sysinfo", "thiserror 2.0.17", "tokio", - "tracing", "zbus", ] @@ -3125,11 +3157,11 @@ dependencies = [ "oma-topics", "oma-utils", "once_cell", + "spdlog-rs", "sys-locale", "sysinfo", "thiserror 2.0.17", "tokio", - "tracing", "url", ] @@ -3141,8 +3173,8 @@ dependencies = [ "oma-apt-sources-lists", "sequoia-openpgp", "sequoia-policy-config", + "spdlog-rs", "thiserror 2.0.17", - "tracing", ] [[package]] @@ -3157,9 +3189,9 @@ dependencies = [ "reqwest", "serde", "serde_json", + "spdlog-rs", "thiserror 2.0.17", "tokio", - "tracing", "url", ] @@ -3174,8 +3206,7 @@ dependencies = [ "serde", "serde_json", "snafu", - "tracing", - "tracing-subscriber", + "spdlog-rs", ] [[package]] @@ -3185,8 +3216,8 @@ dependencies = [ "logind-zbus", "number_prefix", "os-release", + "spdlog-rs", "thiserror 2.0.17", - "tracing", "url-escape", "zbus", ] @@ -3443,12 +3474,6 @@ dependencies = [ "zerovec", ] -[[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.21" @@ -3702,7 +3727,7 @@ dependencies = [ "itertools 0.13.0", "lru", "paste", - "strum", + "strum 0.26.3", "unicode-segmentation", "unicode-truncate", "unicode-width 0.2.0", @@ -4140,6 +4165,15 @@ dependencies = [ "serde_derive", ] +[[package]] +name = "serde_buf" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a86be9d6c7d34718d2ec6f56c8d6a4671d1a7357c2a6921f47fe5a3ee6056cc" +dependencies = [ + "serde", +] + [[package]] name = "serde_core" version = "1.0.228" @@ -4160,6 +4194,15 @@ dependencies = [ "syn", ] +[[package]] +name = "serde_fmt" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d4ddca14104cd60529e8c7f7ba71a2c8acd8f7f5cfcdc2faf97eeb7c3010a4" +dependencies = [ + "serde", +] + [[package]] name = "serde_json" version = "1.0.145" @@ -4359,6 +4402,53 @@ dependencies = [ "windows-sys 0.59.0", ] +[[package]] +name = "spdlog-internal" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7c4ffbdbc9f2d819ffb53ef00a253f524ba7bfd7a3aa8dcd50789b9b27be550" +dependencies = [ + "nom 8.0.0", + "strum 0.27.2", + "strum_macros 0.27.2", + "thiserror 2.0.17", +] + +[[package]] +name = "spdlog-macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b87a8a157696b61e2a87ed9753da2afb2a27c1e7490786fddf3e71d7e0c3b69e" +dependencies = [ + "proc-macro2", + "quote", + "spdlog-internal", + "syn", +] + +[[package]] +name = "spdlog-rs" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d36fd7a0cb4b3f8fa5316a96d89bb68956a3db82427d2d96b9a93657caa0dcf" +dependencies = [ + "arc-swap", + "atomic", + "chrono", + "crossbeam", + "dyn-clone", + "is-terminal", + "libc", + "log", + "once_cell", + "parking_lot", + "rustc_version", + "spdlog-macros", + "thiserror 2.0.17", + "value-bag", + "winapi", +] + [[package]] name = "spin" version = "0.9.8" @@ -4404,7 +4494,16 @@ version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" dependencies = [ - "strum_macros", + "strum_macros 0.26.4", +] + +[[package]] +name = "strum" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +dependencies = [ + "strum_macros 0.27.2", ] [[package]] @@ -4420,12 +4519,102 @@ dependencies = [ "syn", ] +[[package]] +name = "strum_macros" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "subtle" version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +[[package]] +name = "sval" +version = "2.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cc9739f56c5d0c44a5ed45473ec868af02eb896af8c05f616673a31e1d1bb09" + +[[package]] +name = "sval_buffer" +version = "2.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f39b07436a8c271b34dad5070c634d1d3d76d6776e938ee97b4a66a5e8003d0b" +dependencies = [ + "sval", + "sval_ref", +] + +[[package]] +name = "sval_dynamic" +version = "2.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffcb072d857431bf885580dacecf05ed987bac931230736739a79051dbf3499b" +dependencies = [ + "sval", +] + +[[package]] +name = "sval_fmt" +version = "2.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f214f427ad94a553e5ca5514c95c6be84667cbc5568cce957f03f3477d03d5c" +dependencies = [ + "itoa", + "ryu", + "sval", +] + +[[package]] +name = "sval_json" +version = "2.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "389ed34b32e638dec9a99c8ac92d0aa1220d40041026b625474c2b6a4d6f4feb" +dependencies = [ + "itoa", + "ryu", + "sval", +] + +[[package]] +name = "sval_nested" +version = "2.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14bae8fcb2f24fee2c42c1f19037707f7c9a29a0cda936d2188d48a961c4bb2a" +dependencies = [ + "sval", + "sval_buffer", + "sval_ref", +] + +[[package]] +name = "sval_ref" +version = "2.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a4eaea3821d3046dcba81d4b8489421da42961889902342691fb7eab491d79e" +dependencies = [ + "sval", +] + +[[package]] +name = "sval_serde" +version = "2.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "172dd4aa8cb3b45c8ac8f3b4111d644cd26938b0643ede8f93070812b87fb339" +dependencies = [ + "serde", + "sval", + "sval_nested", +] + [[package]] name = "syn" version = "2.0.106" @@ -4645,37 +4834,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "time" -version = "0.3.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" -dependencies = [ - "deranged", - "itoa", - "num-conv", - "powerfmt", - "serde", - "time-core", - "time-macros", -] - -[[package]] -name = "time-core" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" - -[[package]] -name = "time-macros" -version = "0.2.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" -dependencies = [ - "num-conv", - "time-core", -] - [[package]] name = "tiny-keccak" version = "2.0.2" @@ -4952,18 +5110,6 @@ dependencies = [ "tracing-core", ] -[[package]] -name = "tracing-appender" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" -dependencies = [ - "crossbeam-channel", - "thiserror 1.0.69", - "time", - "tracing-subscriber", -] - [[package]] name = "tracing-attributes" version = "0.1.30" @@ -4985,17 +5131,6 @@ dependencies = [ "valuable", ] -[[package]] -name = "tracing-log" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" -dependencies = [ - "log", - "once_cell", - "tracing-core", -] - [[package]] name = "tracing-subscriber" version = "0.3.20" @@ -5003,15 +5138,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" dependencies = [ "matchers", - "nu-ansi-term", "once_cell", "regex-automata", "sharded-slab", - "smallvec", "thread_local", "tracing", "tracing-core", - "tracing-log", ] [[package]] @@ -5029,6 +5161,12 @@ dependencies = [ "rustc-hash 2.1.1", ] +[[package]] +name = "typeid" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" + [[package]] name = "typenum" version = "1.19.0" @@ -5163,6 +5301,43 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" +[[package]] +name = "value-bag" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "943ce29a8a743eb10d6082545d861b24f9d1b160b7d741e0f2cdf726bec909c5" +dependencies = [ + "value-bag-serde1", + "value-bag-sval2", +] + +[[package]] +name = "value-bag-serde1" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35540706617d373b118d550d41f5dfe0b78a0c195dc13c6815e92e2638432306" +dependencies = [ + "erased-serde", + "serde", + "serde_buf", + "serde_fmt", +] + +[[package]] +name = "value-bag-sval2" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe7e140a2658cc16f7ee7a86e413e803fc8f9b5127adc8755c19f9fefa63a52" +dependencies = [ + "sval", + "sval_buffer", + "sval_dynamic", + "sval_fmt", + "sval_json", + "sval_ref", + "sval_serde", +] + [[package]] name = "vcpkg" version = "0.2.15" diff --git a/Cargo.toml b/Cargo.toml index 8f8e5e513..788994da1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,7 +10,14 @@ authors = ["eatradish "] [dependencies] # Cli -clap = { version = "4.5.19", features = ["cargo", "wrap_help", "color", "derive", "env", "string"] } +clap = { version = "4.5.19", features = [ + "cargo", + "wrap_help", + "color", + "derive", + "env", + "string", +] } anyhow = "1.0.89" ctrlc = "3.4.5" dialoguer = "0.12.0" @@ -24,8 +31,7 @@ chrono = "0.4.38" rustix = { version = "1", features = ["process", "stdio"] } libc = "0.2.159" reqwest = { version = "0.12.8", default-features = false } -tracing = "0.1.40" -tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } +spdlog-rs = { version = "0.5.0", features = ["multi-thread", "source-location", "log"] } console-subscriber = { version = "0.4.0", optional = true } ratatui = "0.29.0" ansi-to-tui = "7.0.0" @@ -43,7 +49,6 @@ clap_complete = { version = "4.5", features = ["unstable-dynamic"] } clap_lex = "0.7.4" fs4 = "0.13.1" fs_extra = "1.3.0" -tracing-appender = "0.2.3" dirs = "6.0.0" termtree = "0.5.1" textwrap = "0.16.2" @@ -68,7 +73,10 @@ oma-tum = { path = "./oma-tum", optional = true } debversion = "0.4" # i18n -i18n-embed = { version = "0.16.0", features = ["fluent-system", "desktop-requester"]} +i18n-embed = { version = "0.16.0", features = [ + "fluent-system", + "desktop-requester", +] } i18n-embed-fl = "0.10" rust-embed = "8.5.0" @@ -77,14 +85,38 @@ aosc = ["dep:oma-topics", "oma-refresh/aosc", "oma-pm/aosc", "oma-contents/aosc" sequoia-openssl-backend = ["oma-refresh/sequoia-openssl-backend"] sequoia-nettle-backend = ["oma-refresh/sequoia-nettle-backend"] tokio-console = ["dep:console-subscriber"] -rustls = ["reqwest/rustls-tls", "oma-fetch/rustls", "oma-refresh/rustls", "oma-topics/rustls"] -openssl = ["reqwest/native-tls", "oma-fetch/native-tls", "oma-refresh/native-tls", "oma-topics/native-tls"] +rustls = [ + "reqwest/rustls-tls", + "oma-fetch/rustls", + "oma-refresh/rustls", + "oma-topics/rustls", +] +openssl = [ + "reqwest/native-tls", + "oma-fetch/native-tls", + "oma-refresh/native-tls", + "oma-topics/native-tls", +] nice-setup = ["sequoia-nettle-backend", "rustls", "oma-refresh/apt"] openssl-setup = ["sequoia-openssl-backend", "openssl", "oma-refresh/apt"] default = ["aosc", "nice-setup"] [workspace] -members = ["oma-contents", "oma-console", "oma-topics", "oma-fetch", "oma-refresh", "oma-utils", "oma-pm", "oma-history", "oma-pm-operation-type", "oma-repo-verify", "oma-mirror", "apt-auth-config", "oma-tum"] +members = [ + "oma-contents", + "oma-console", + "oma-topics", + "oma-fetch", + "oma-refresh", + "oma-utils", + "oma-pm", + "oma-history", + "oma-pm-operation-type", + "oma-repo-verify", + "oma-mirror", + "apt-auth-config", + "oma-tum", +] [package.metadata.deb] copyright = "2025, AOSC Dev " diff --git a/apt-auth-config/Cargo.toml b/apt-auth-config/Cargo.toml index 4dcbbc2ca..087f1e6ee 100644 --- a/apt-auth-config/Cargo.toml +++ b/apt-auth-config/Cargo.toml @@ -7,6 +7,6 @@ license = "MIT" [dependencies] thiserror = "2" -tracing = "0.1" +spdlog-rs = "0.5.0" rust-netrc = "0.1" url = "2.5" diff --git a/oma-console/Cargo.toml b/oma-console/Cargo.toml index 5a6848964..304450a39 100644 --- a/oma-console/Cargo.toml +++ b/oma-console/Cargo.toml @@ -8,10 +8,10 @@ license = "MIT" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] +chrono = { version = "0.4.38", optional = true } console = { version = "0.16", optional = true } indicatif = { version = "0.18", optional = true } -tracing = { version = "0.1", optional = true } -tracing-subscriber = { version = "0.3", optional = true } +spdlog-rs = "0.5.0" ratatui = { version = "0.29", optional = true } # https://github.com/async-rs/async-std/issues/1055 # https://github.com/tokio-rs/tokio/issues/5535 @@ -21,7 +21,7 @@ textwrap = { version = "0.16", optional = true } aho-corasick = { version = "1.1.3", optional = true } [features] -print = ["dep:tracing", "dep:tracing-subscriber", "dep:textwrap", "dep:console", "dep:termbg"] +print = ["dep:textwrap", "dep:console", "dep:termbg", "dep:chrono"] pager = ["dep:ratatui", "dep:ansi-to-tui", "dep:console", "dep:aho-corasick"] progress_bar_style = ["dep:indicatif"] default = ["print", "pager", "progress_bar_style"] diff --git a/oma-console/examples/msg.rs b/oma-console/examples/msg.rs index 572841c9c..ef2f8f0d2 100644 --- a/oma-console/examples/msg.rs +++ b/oma-console/examples/msg.rs @@ -1,11 +1,15 @@ -use oma_console::OmaLayer; -use tracing_subscriber::{prelude::__tracing_subscriber_SubscriberExt, util::SubscriberInitExt}; +use oma_console::OmaFormatter; fn main() { - tracing_subscriber::registry().with(OmaLayer::new()).init(); - tracing::info!("Welcome"); - tracing::debug!("Hello"); - tracing::info!("I'am fine"); - tracing::warn!("Thank you"); - tracing::error!("and you?"); + spdlog::default_logger() + .sinks() + .iter() + .for_each(|s| s.set_formatter(Box::new(OmaFormatter::default()))); + spdlog::default_logger().set_level_filter(spdlog::LevelFilter::All); + + spdlog::info!("Welcome"); + spdlog::debug!("Hello"); + spdlog::info!("I'am fine"); + spdlog::warn!("Thank you"); + spdlog::error!("and you?"); } diff --git a/oma-console/src/lib.rs b/oma-console/src/lib.rs index e0f3a6c10..3a1fd8a2a 100644 --- a/oma-console/src/lib.rs +++ b/oma-console/src/lib.rs @@ -30,7 +30,7 @@ pub mod writer; pub mod print; #[cfg(feature = "print")] -pub use print::OmaLayer; +pub use print::OmaFormatter; #[cfg(feature = "print")] pub use console; diff --git a/oma-console/src/pager.rs b/oma-console/src/pager.rs index 446f0bf3e..b9550f9e1 100644 --- a/oma-console/src/pager.rs +++ b/oma-console/src/pager.rs @@ -22,8 +22,8 @@ use ratatui::{ }, widgets::Borders, }; +use spdlog::debug; use termbg::Theme; -use tracing::debug; use crate::{print::OmaColorFormat, writer::Writer}; diff --git a/oma-console/src/print.rs b/oma-console/src/print.rs index a8db3a53d..ff8ca9791 100644 --- a/oma-console/src/print.rs +++ b/oma-console/src/print.rs @@ -1,13 +1,14 @@ -use std::{borrow::Cow, collections::BTreeMap, time::Duration}; +use std::fmt::{self, Write}; +use std::{borrow::Cow, time::Duration}; +use chrono::{DateTime, SecondsFormat, Utc}; use console::{Color, StyledObject, style}; +use spdlog::{Level, debug, formatter::Formatter}; use termbg::Theme; -use tracing::{Level, debug, field::Field}; -use tracing_subscriber::Layer; pub use termbg; -use crate::writer::{Writeln, Writer}; +use crate::writer::gen_prefix; #[derive(Clone)] enum StyleFollow { @@ -131,41 +132,60 @@ fn term_color(input: D, color: Action) -> StyledObject { Action::PendingBg => style(input).bg(Color::Blue).bold(), } } -/// OmaLayer -/// `OmaLayer` is used for outputting oma-style logs to `tracing` + +/// OmaFormatter +/// `OmaFormatter` is used for outputting oma-style logs to `spdlog-rs` /// /// # Example: /// ``` -/// use tracing_subscriber::prelude::*; -/// use oma_console::OmaLayer; -/// use tracing::info; +/// use spdlog::{info, sink::StdStreamSink, Logger, Result}; +/// use oma_console::OmaFormatter; +/// +/// use std::sync::Arc; +/// +/// fn main() -> Result<()> { +/// let mut logger_builder = Logger::builder(); +/// +/// let stream_sink = StdStreamSink::builder() +/// .formatter(OmaFormatter::default()) +/// .stdout() +/// .build()?; +/// +/// let logger = logger_builder.sink(Arc::new(stream_sink)).build()?; +/// +/// spdlog::set_default_logger(Arc::new(logger)); /// -/// tracing_subscriber::registry() -/// .with(OmaLayer::new()) -/// .init(); +/// info!("My name is oma!"); /// -/// info!("My name is oma!"); +/// Ok(()) +/// } /// ``` /// -pub struct OmaLayer { - /// Display result with ansi +#[derive(Clone)] +pub struct OmaFormatter { with_ansi: bool, - /// A Terminal writer to print oma-style message - writer: Writer, + with_time: bool, + with_file: bool, + #[allow(unused)] + with_kv: bool, + prefix_len: u16, } -impl Default for OmaLayer { +impl Default for OmaFormatter { fn default() -> Self { Self { with_ansi: true, - writer: Writer::default(), + with_file: false, + with_time: false, + with_kv: false, + prefix_len: 10, } } } -impl OmaLayer { +impl OmaFormatter { pub fn new() -> Self { - OmaLayer::default() + OmaFormatter::default() } /// Display with ANSI colors @@ -175,95 +195,107 @@ impl OmaLayer { self.with_ansi = with_ansi; self } -} -impl Layer for OmaLayer -where - S: tracing::Subscriber, - S: for<'lookup> tracing_subscriber::registry::LookupSpan<'lookup>, -{ - fn on_event( + pub fn with_file(mut self, with_file: bool) -> Self { + self.with_file = with_file; + self + } + + pub fn with_time(mut self, with_time: bool) -> Self { + self.with_time = with_time; + self + } + + #[allow(unused)] + pub fn with_kv(mut self, with_kv: bool) -> Self { + self.with_kv = with_kv; + self + } + + fn format_impl( &self, - event: &tracing::Event<'_>, - _ctx: tracing_subscriber::layer::Context<'_, S>, - ) { - let level = *event.metadata().level(); + record: &spdlog::Record, + dest: &mut spdlog::StringBuf, + _: &mut spdlog::formatter::FormatterContext, + ) -> fmt::Result { + let level = record.level(); let prefix = if self.with_ansi { Cow::Owned(match level { - Level::DEBUG => console::style("DEBUG").dim().to_string(), - Level::INFO => console::style("INFO").blue().bold().to_string(), - Level::WARN => console::style("WARNING").yellow().bold().to_string(), - Level::ERROR => console::style("ERROR").red().bold().to_string(), - Level::TRACE => console::style("TRACE").dim().to_string(), + Level::Debug => console::style("DEBUG").dim().to_string(), + Level::Info => console::style("INFO").blue().bold().to_string(), + Level::Warn => console::style("WARNING").yellow().bold().to_string(), + Level::Error => console::style("ERROR").red().bold().to_string(), + Level::Trace => console::style("TRACE").dim().to_string(), + Level::Critical => console::style("CRITICAL").red().bright().bold().to_string(), }) } else { Cow::Borrowed(match level { - Level::DEBUG => "DEBUG", - Level::INFO => "INFO", - Level::WARN => "WARNING", - Level::ERROR => "ERROR", - Level::TRACE => "TRACE", + Level::Debug => "DEBUG", + Level::Info => "INFO", + Level::Warn => "WARNING", + Level::Error => "ERROR", + Level::Trace => "TRACE", + Level::Critical => "CRITICAL", }) }; - let mut visitor = OmaRecorder(BTreeMap::new()); - event.record(&mut visitor); + if self.with_time { + let time = { + let time = DateTime::::from(record.time()) + .to_rfc3339_opts(SecondsFormat::Millis, true); - for (k, v) in visitor.0 { - if k == "message" { if self.with_ansi { - self.writer.writeln(&prefix, &v).ok(); + console::style(time).dim().to_string() } else { - self.writer - .writeln(&prefix, &console::strip_ansi_codes(&v)) - .ok(); + time } - } - } - } -} -/// OmaRecorder -/// `OmaRecorder` is used for recording oma-style logs. -/// -/// # Example: -/// ```ignore -/// let mut visitor = OmaRecorder(BTreeMap::new()); -/// event.record(&mut visitor); -/// for (k, v) in visitor.0 { -/// if k == "message" { -/// self.writer.writeln(&prefix, &v).ok(); -/// } -/// } -/// ``` -struct OmaRecorder<'a>(BTreeMap<&'a str, String>); + }; -impl tracing::field::Visit for OmaRecorder<'_> { - fn record_f64(&mut self, field: &Field, value: f64) { - self.0.insert(field.name(), value.to_string()); - } + dest.write_str(&time)?; + dest.write_char(' ')?; + }; - fn record_i64(&mut self, field: &Field, value: i64) { - self.0.insert(field.name(), value.to_string()); - } + dest.write_str(&gen_prefix(&prefix, self.prefix_len))?; + dest.write_char(' ')?; - fn record_u64(&mut self, field: &Field, value: u64) { - self.0.insert(field.name(), value.to_string()); - } + if self.with_file { + let loc = record.source_location(); - fn record_bool(&mut self, field: &Field, value: bool) { - self.0.insert(field.name(), value.to_string()); - } + if let Some(loc) = loc { + let loc = format!("{}: {}:", loc.module_path(), loc.file()); - fn record_str(&mut self, field: &Field, value: &str) { - self.0.insert(field.name(), value.to_string()); - } + let loc = if self.with_ansi { + console::style(loc).dim().to_string() + } else { + loc + }; + + dest.write_str(&loc)?; + dest.write_char(' ')?; + } + } + + if self.with_ansi { + dest.write_str(record.payload())?; + } else { + dest.write_str(&console::strip_ansi_codes(record.payload()))?; + } + + dest.write_char('\n')?; - fn record_error(&mut self, field: &Field, value: &(dyn std::error::Error + 'static)) { - self.0.insert(field.name(), format!("{value:#?}")); + Ok(()) } +} - fn record_debug(&mut self, field: &Field, value: &dyn std::fmt::Debug) { - self.0.insert(field.name(), format!("{value:#?}")); +impl Formatter for OmaFormatter { + fn format( + &self, + record: &spdlog::Record, + dest: &mut spdlog::StringBuf, + ctx: &mut spdlog::formatter::FormatterContext, + ) -> spdlog::Result<()> { + self.format_impl(record, dest, ctx) + .map_err(|e| spdlog::Error::FormatRecord(e)) } } diff --git a/oma-contents/Cargo.toml b/oma-contents/Cargo.toml index 4bdb8a60e..c08e820ea 100644 --- a/oma-contents/Cargo.toml +++ b/oma-contents/Cargo.toml @@ -14,7 +14,7 @@ winnow = "0.7" flate2 = "1.0" rayon = "1.8" lzzzz = "2.0" -tracing = "0.1" +spdlog-rs = "0.5.0" which = "8" zstd = "0.13" memchr = "2" diff --git a/oma-contents/src/parser.rs b/oma-contents/src/parser.rs index fce0d32cb..28703c8b9 100644 --- a/oma-contents/src/parser.rs +++ b/oma-contents/src/parser.rs @@ -3,7 +3,7 @@ use winnow::{ModalResult, Parser, combinator::separated, token::take_till}; use crate::OmaContentsError; /// Parse Contents file from input -pub fn parse_contetns(input: &str) -> Result)>, OmaContentsError> { +pub fn parse_contents(input: &str) -> Result)>, OmaContentsError> { input .lines() .enumerate() diff --git a/oma-contents/src/searcher.rs b/oma-contents/src/searcher.rs index 6e5ff90b9..23682ad4e 100644 --- a/oma-contents/src/searcher.rs +++ b/oma-contents/src/searcher.rs @@ -14,7 +14,7 @@ use flate2::bufread::GzDecoder; use lzzzz::lz4f::BufReadDecompressor; use memchr::memmem; use rayon::iter::{IntoParallelRefIterator, ParallelIterator}; -use tracing::debug; +use spdlog::debug; use zstd::Decoder; use crate::{OmaContentsError, parser::parse_contents_single_line}; diff --git a/oma-fetch/Cargo.toml b/oma-fetch/Cargo.toml index 44d99c0ae..395f23143 100644 --- a/oma-fetch/Cargo.toml +++ b/oma-fetch/Cargo.toml @@ -20,7 +20,7 @@ async-compression = { version = "=0.4.27", features = ["gzip", "xz", "futures-io # even with older liblzma (Ubuntu 22.04 uses 5.2.x). Be mindful, however, that # async-compression depends on a different liblzma-rs than what is specified here. liblzma = { version = "0", features = ["uncheck_liblzma_version"] } -tracing = "0.1" +spdlog-rs = "0.5.0" tokio-util = { version = "0.7", features = ["compat"] } md-5 = "0.10.6" bon = "3" diff --git a/oma-fetch/src/download.rs b/oma-fetch/src/download.rs index 97d13550a..8348929e3 100644 --- a/oma-fetch/src/download.rs +++ b/oma-fetch/src/download.rs @@ -14,14 +14,13 @@ use reqwest::{ header::{ACCEPT_RANGES, CONTENT_LENGTH, HeaderValue, RANGE}, }; use snafu::{ResultExt, Snafu}; +use spdlog::{debug, trace}; use tokio::{ fs::{self, File}, io::{AsyncBufReadExt as _, AsyncReadExt as _, AsyncSeekExt, AsyncWriteExt}, time::timeout, }; - use tokio_util::compat::{FuturesAsyncReadCompatExt, TokioAsyncReadCompatExt}; -use tracing::{debug, trace}; use crate::{DownloadEntry, DownloadSourceType}; diff --git a/oma-fetch/src/lib.rs b/oma-fetch/src/lib.rs index abc32b409..2e9cd945e 100644 --- a/oma-fetch/src/lib.rs +++ b/oma-fetch/src/lib.rs @@ -4,9 +4,8 @@ use bon::{Builder, builder}; use checksum::Checksum; use download::{BuilderError, SingleDownloader, SuccessSummary}; use futures::StreamExt; - use reqwest::{Client, Method, RequestBuilder, Response}; -use tracing::debug; +use spdlog::debug; pub mod checksum; pub mod download; diff --git a/oma-history/Cargo.toml b/oma-history/Cargo.toml index a78846273..256ef5fd3 100644 --- a/oma-history/Cargo.toml +++ b/oma-history/Cargo.toml @@ -12,7 +12,7 @@ oma-pm-operation-type = { version = "0.9", path = "../oma-pm-operation-type" } rusqlite = { version = "0.37", features = ["bundled"] } serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -tracing = "0.1" +spdlog-rs = "0.5.0" thiserror = "2" [dev-dependencies] diff --git a/oma-history/src/lib.rs b/oma-history/src/lib.rs index bb6d48779..07b499e9d 100644 --- a/oma-history/src/lib.rs +++ b/oma-history/src/lib.rs @@ -11,8 +11,8 @@ use migrations::create_and_maybe_migration_from_oma_db_v2; use oma_pm_operation_type::{InstallOperation, OmaOperation, RemoveTag}; use rusqlite::{Connection, Error, Result}; use serde::Deserialize; +use spdlog::debug; use thiserror::Error; -use tracing::debug; pub struct HistoryEntryInner { pub install: Vec, diff --git a/oma-history/src/migrations.rs b/oma-history/src/migrations.rs index f58b6130f..d1cb624d2 100644 --- a/oma-history/src/migrations.rs +++ b/oma-history/src/migrations.rs @@ -2,7 +2,7 @@ use oma_pm_operation_type::{InstallOperation, RemoveTag}; use rusqlite::Connection; use serde::Deserialize; use serde_json::Value; -use tracing::{debug, info, warn}; +use spdlog::{debug, info, warn}; use crate::{ HistoryEntryInner, HistoryError, HistoryResult, INSERT_INSTALL_TABLE, INSERT_NEW_MAIN_TABLE, diff --git a/oma-mirror/Cargo.toml b/oma-mirror/Cargo.toml index 634f9fb6b..d20ba18d0 100644 --- a/oma-mirror/Cargo.toml +++ b/oma-mirror/Cargo.toml @@ -11,6 +11,6 @@ serde_json = "1.0" snafu = "0.8.5" indexmap = { version = "2.6", features = ["serde"] } ahash = "0.8.11" -tracing = "0.1" +spdlog-rs = "0.5.0" once_cell = "1.19" toml = { version = "0.9", features = ["preserve_order"] } diff --git a/oma-mirror/src/lib.rs b/oma-mirror/src/lib.rs index a35cf94af..68b1d7624 100644 --- a/oma-mirror/src/lib.rs +++ b/oma-mirror/src/lib.rs @@ -11,7 +11,7 @@ use indexmap::{IndexMap, indexmap}; use once_cell::sync::OnceCell; use serde::{Deserialize, Serialize}; use snafu::{ResultExt, Snafu}; -use tracing::debug; +use spdlog::debug; use crate::parser::{ MirrorConfig, MirrorConfigTemplate, MirrorsConfig, MirrorsConfigTemplate, TemplateParseError, diff --git a/oma-pm/Cargo.toml b/oma-pm/Cargo.toml index eb6892b29..3db352da7 100644 --- a/oma-pm/Cargo.toml +++ b/oma-pm/Cargo.toml @@ -20,11 +20,11 @@ oma-utils = { version = "^0.12.0", path = "../oma-utils", features = [ ] } oma-fetch = { version = "^0.33.0", path = "../oma-fetch" } tokio = { version = "1.15", default-features = false, features = [ - "fs", - "rt-multi-thread", + "fs", + "rt-multi-thread", ] } fs4 = "0.13" -tracing = "0.1" +spdlog-rs = "0.5.0" oma-pm-operation-type = { version = "0.9", path = "../oma-pm-operation-type" } zbus = { version = "5.1", features = ["tokio"] } cxx = "1.0.121" diff --git a/oma-pm/src/apt.rs b/oma-pm/src/apt.rs index 350434b9f..2417dfce3 100644 --- a/oma-pm/src/apt.rs +++ b/oma-pm/src/apt.rs @@ -27,10 +27,9 @@ use oma_fetch::{Event, Summary, checksum::ChecksumError, reqwest::Client}; use oma_utils::{dpkg::DpkgError, human_bytes::HumanBytes}; pub use oma_apt::config::Config as AptConfig; -use tracing::{debug, error}; - #[cfg(feature = "aosc")] -use tracing::warn; +use spdlog::warn; +use spdlog::{debug, error}; pub use oma_pm_operation_type::*; use zbus::Connection; diff --git a/oma-pm/src/commit.rs b/oma-pm/src/commit.rs index 509afd574..6ace3e776 100644 --- a/oma-pm/src/commit.rs +++ b/oma-pm/src/commit.rs @@ -9,8 +9,8 @@ use oma_apt::{ }; use oma_fetch::{Event, Summary, reqwest::Client}; use oma_pm_operation_type::{InstallEntry, OmaOperation}; +use spdlog::debug; use std::io::Write; -use tracing::debug; use crate::{ apt::{DownloadConfig, InstallProgressOpt, OmaApt, OmaAptError, OmaAptResult}, diff --git a/oma-pm/src/dbus.rs b/oma-pm/src/dbus.rs index 6c6dd83b3..dcfdb7f22 100644 --- a/oma-pm/src/dbus.rs +++ b/oma-pm/src/dbus.rs @@ -1,4 +1,4 @@ -use tracing::debug; +use spdlog::debug; use zbus::{Connection, Result, interface, proxy}; pub struct OmaBus { diff --git a/oma-pm/src/download.rs b/oma-pm/src/download.rs index 6703098e0..0fd120070 100644 --- a/oma-pm/src/download.rs +++ b/oma-pm/src/download.rs @@ -6,7 +6,7 @@ use oma_fetch::{ }; use oma_pm_operation_type::InstallEntry; use oma_utils::url_no_escape::url_no_escape_times; -use tracing::debug; +use spdlog::debug; use crate::{ CustomDownloadMessage, diff --git a/oma-pm/src/dpkg.rs b/oma-pm/src/dpkg.rs index a7c30f103..0009ad55d 100644 --- a/oma-pm/src/dpkg.rs +++ b/oma-pm/src/dpkg.rs @@ -1,7 +1,7 @@ use std::{fmt::Display, fs, io, path::Path, str::FromStr}; use deb822_lossless::{Deb822, Paragraph}; -use tracing::{debug, info}; +use spdlog::{debug, info}; use crate::apt::{OmaAptError, OmaAptResult}; diff --git a/oma-pm/src/matches.rs b/oma-pm/src/matches.rs index e4a66d702..385e8c13c 100644 --- a/oma-pm/src/matches.rs +++ b/oma-pm/src/matches.rs @@ -14,7 +14,7 @@ use oma_utils::{ url_no_escape::url_no_escape, }; use once_cell::sync::OnceCell; -use tracing::{debug, info}; +use spdlog::{debug, info}; use crate::pkginfo::{OmaPackage, OmaPackageWithoutVersion, PtrIsNone}; diff --git a/oma-pm/src/utils.rs b/oma-pm/src/utils.rs index a039276a8..c779136a5 100644 --- a/oma-pm/src/utils.rs +++ b/oma-pm/src/utils.rs @@ -1,3 +1,4 @@ +use spdlog::{debug, warn}; use std::{fs, io, path::Path}; #[cfg(feature = "aosc")] @@ -13,13 +14,13 @@ pub fn pkg_is_current_kernel( sysroot: &Path, ) -> bool { is_installed_pkg_contains_file(pkg_name, image_names, sysroot).unwrap_or_else(|e| { - tracing::warn!("Failed to get package {pkg_name} file list: {e}"); + warn!("Failed to get package {pkg_name} file list: {e}"); false }) } let image_name = image_name.get_or_init(get_kernel_image_filename); - tracing::debug!("image name = {image_name:?}"); + debug!("image name = {image_name:?}"); if let Some(image_name) = image_name { is_installed_pkg_contains_file_impl(pkg_name, &[image_name], sysroot) diff --git a/oma-refresh/Cargo.toml b/oma-refresh/Cargo.toml index 952d9d710..dc865f924 100644 --- a/oma-refresh/Cargo.toml +++ b/oma-refresh/Cargo.toml @@ -16,7 +16,7 @@ futures = "0.3" oma-apt-sources-lists = "0.9" chrono = { version = "0.4", features = ["unstable-locales"] } oma-topics = { version = "^0.25.0", path = "../oma-topics", optional = true, default-features = false } -tracing ="0.1" +spdlog-rs = "0.5.0" oma-repo-verify = { version = "^0.9.0", path = "../oma-repo-verify", default-features = false } ahash = "0.8.11" oma-apt = { version = "0.11", optional = true } diff --git a/oma-refresh/src/config.rs b/oma-refresh/src/config.rs index cc7f79d7e..1abceca4a 100644 --- a/oma-refresh/src/config.rs +++ b/oma-refresh/src/config.rs @@ -5,7 +5,7 @@ use aho_corasick::AhoCorasick; #[cfg(feature = "apt")] use oma_apt::config::{Config, ConfigTree}; use oma_fetch::CompressFile; -use tracing::debug; +use spdlog::debug; use crate::{db::RefreshError, inrelease::ChecksumItem}; diff --git a/oma-refresh/src/db.rs b/oma-refresh/src/db.rs index 5320dddc3..239c972a8 100644 --- a/oma-refresh/src/db.rs +++ b/oma-refresh/src/db.rs @@ -39,12 +39,12 @@ use oma_topics::TopicManager; #[cfg(feature = "aosc")] use oma_fetch::reqwest::StatusCode; +use spdlog::{debug, warn}; use sysinfo::{Pid, System}; use tokio::{ fs::{self}, task::spawn_blocking, }; -use tracing::{debug, warn}; use crate::sourceslist::{MirrorSource, MirrorSources, scan_sources_list_from_paths}; use crate::{ @@ -352,7 +352,6 @@ impl<'a> OmaRefresh<'a> { #[cfg(feature = "apt")] async fn run_success_post_invoke(&self) { use tokio::process::Command; - use tracing::warn; let cmds = self .apt_config diff --git a/oma-refresh/src/inrelease.rs b/oma-refresh/src/inrelease.rs index 2578fbbe8..2ea25778a 100644 --- a/oma-refresh/src/inrelease.rs +++ b/oma-refresh/src/inrelease.rs @@ -3,6 +3,7 @@ use deb822_fast::{FromDeb822, FromDeb822Paragraph, Paragraph}; use oma_apt_sources_lists::Signature; use oma_repo_verify::verify_release_by_sysroot; use once_cell::sync::OnceCell; +use spdlog::{debug, trace}; use std::{ borrow::Cow, fs, @@ -12,7 +13,6 @@ use std::{ str::FromStr, }; use thiserror::Error; -use tracing::{debug, trace}; #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct ChecksumItem { diff --git a/oma-refresh/src/sourceslist.rs b/oma-refresh/src/sourceslist.rs index 7c063346f..9e7b72596 100644 --- a/oma-refresh/src/sourceslist.rs +++ b/oma-refresh/src/sourceslist.rs @@ -17,11 +17,11 @@ use oma_fetch::{ send_request, }; use once_cell::sync::OnceCell; +use spdlog::{debug, warn}; use tokio::{ fs::{self, File}, io::AsyncWriteExt, }; -use tracing::debug; use url::Url; use crate::{ @@ -81,8 +81,6 @@ pub(crate) async fn scan_sources_lists_paths_from_sysroot( #[cfg(feature = "apt")] pub fn ignores(config: &oma_apt::config::Config) -> Vec { - use tracing::warn; - config.find_vector("Dir::Ignore-Files-Silently") .iter() .filter_map(|re| Regex::new(re) diff --git a/oma-repo-verify/Cargo.toml b/oma-repo-verify/Cargo.toml index 576a695d2..d6f05589d 100644 --- a/oma-repo-verify/Cargo.toml +++ b/oma-repo-verify/Cargo.toml @@ -9,7 +9,7 @@ license = "MIT" anyhow = "1" thiserror = "2" sequoia-openpgp = { version = "2", default-features = false } -tracing = "0.1" +spdlog-rs = "0.5.0" oma-apt-sources-lists = "0.9" sequoia-policy-config = "0.8" diff --git a/oma-repo-verify/src/lib.rs b/oma-repo-verify/src/lib.rs index 6568c6043..b6849aae5 100644 --- a/oma-repo-verify/src/lib.rs +++ b/oma-repo-verify/src/lib.rs @@ -18,7 +18,7 @@ use sequoia_openpgp::{ policy::StandardPolicy, }; use sequoia_policy_config::ConfiguredStandardPolicy; -use tracing::debug; +use spdlog::debug; #[derive(Debug)] pub struct InReleaseVerifier { diff --git a/oma-topics/Cargo.toml b/oma-topics/Cargo.toml index 68e352e35..328eda770 100644 --- a/oma-topics/Cargo.toml +++ b/oma-topics/Cargo.toml @@ -14,7 +14,7 @@ serde_json = "1.0" tokio = { version = "1.28", default-features = false, features = ["fs", "rt", "rt-multi-thread"] } thiserror = "2.0" futures = "0.3" -tracing = "0.1" +spdlog-rs = "0.5.0" url = "2.5" oma-mirror = { version = "0.7.0", path = "../oma-mirror" } ahash = "0.8.11" diff --git a/oma-topics/src/lib.rs b/oma-topics/src/lib.rs index 79a70d4a1..c716cfab2 100644 --- a/oma-topics/src/lib.rs +++ b/oma-topics/src/lib.rs @@ -9,8 +9,8 @@ use futures::future::try_join_all; use oma_mirror::{MirrorError, MirrorManager, parser::MirrorsConfigTemplate, write_sources_inner}; use reqwest::Client; use serde::{Deserialize, Serialize, de::DeserializeOwned}; +use spdlog::{debug, warn}; use tokio::fs; -use tracing::{debug, warn}; use url::Url; pub type Result = std::result::Result; diff --git a/oma-tum/Cargo.toml b/oma-tum/Cargo.toml index cba58e998..b90dcf24f 100644 --- a/oma-tum/Cargo.toml +++ b/oma-tum/Cargo.toml @@ -11,9 +11,6 @@ snafu = "0.8.6" serde = { version = "1", features = ["derive"] } serde_json = "1" ahash = "0.8.12" -tracing = "0.1" +spdlog-rs = "0.5.0" logos = "0.15" debversion = "0.4.5" - -[dev-dependencies] -tracing-subscriber = { version = "0.3.18", features = ["env-filter"] } diff --git a/oma-tum/examples/tum.rs b/oma-tum/examples/tum.rs index 32bb931a0..4e11ebf83 100644 --- a/oma-tum/examples/tum.rs +++ b/oma-tum/examples/tum.rs @@ -2,11 +2,8 @@ use std::path::Path; use oma_pm_operation_type::{InstallEntry, InstallOperation, OmaOperation, PackageUrl}; use oma_tum::{get_matches_tum, get_tum}; -use tracing_subscriber::{fmt, layer::SubscriberExt, util::SubscriberInitExt}; fn main() { - tracing_subscriber::registry().with(fmt::layer()).init(); - let dir = Path::new(env!("CARGO_MANIFEST_DIR")); let tum = get_tum(&dir.join("examples/tum")).unwrap(); let tum = get_matches_tum( diff --git a/oma-tum/src/lib.rs b/oma-tum/src/lib.rs index bd13e35e7..3d02856d0 100644 --- a/oma-tum/src/lib.rs +++ b/oma-tum/src/lib.rs @@ -10,7 +10,7 @@ use debversion::Version; use oma_pm_operation_type::{InstallOperation, OmaOperation}; use serde::Deserialize; use snafu::{ResultExt, Snafu, Whatever}; -use tracing::warn; +use spdlog::warn; use crate::parser::{VersionToken, parse_version_expr}; diff --git a/oma-utils/Cargo.toml b/oma-utils/Cargo.toml index 04d08665c..19bde55f5 100644 --- a/oma-utils/Cargo.toml +++ b/oma-utils/Cargo.toml @@ -13,7 +13,7 @@ number_prefix = { version = "0.4", optional = true } os-release = "0.1" zbus = { version = "5.1", optional = true } url-escape = { version = "0.1", optional = true } -tracing = "0.1" +spdlog-rs = "0.5.0" logind-zbus = "5.1" [features] diff --git a/oma-utils/src/dbus/mod.rs b/oma-utils/src/dbus/mod.rs index a72e3f481..0b341baca 100644 --- a/oma-utils/src/dbus/mod.rs +++ b/oma-utils/src/dbus/mod.rs @@ -1,7 +1,7 @@ use std::fmt::Display; use logind_zbus::session::SessionProxy; -use tracing::debug; +use spdlog::debug; use zbus::{Result as zResult, proxy, zvariant::OwnedFd}; pub use zbus::Connection; diff --git a/oma-utils/src/dpkg/mod.rs b/oma-utils/src/dpkg/mod.rs index aef443b4f..cd5559013 100644 --- a/oma-utils/src/dpkg/mod.rs +++ b/oma-utils/src/dpkg/mod.rs @@ -4,7 +4,7 @@ use std::{ process::{Command, Stdio}, }; -use tracing::debug; +use spdlog::debug; #[derive(Debug, thiserror::Error)] pub enum DpkgError { diff --git a/src/config.rs b/src/config.rs index 642401fb1..2bac66800 100644 --- a/src/config.rs +++ b/src/config.rs @@ -1,6 +1,7 @@ -use crate::{error, fl}; +use crate::fl; use serde::{Deserialize, Serialize}; -use tracing::warn; + +use spdlog::{error, warn}; #[cfg(feature = "aosc")] const DEFAULT_CONFIG: &str = include_str!("../data/config/oma.toml"); diff --git a/src/error.rs b/src/error.rs index c77645a53..c2f131b5a 100644 --- a/src/error.rs +++ b/src/error.rs @@ -29,7 +29,7 @@ use oma_utils::dpkg::DpkgError; #[cfg(feature = "aosc")] use oma_topics::OmaTopicsError; -use tracing::{debug, error, info}; +use spdlog::{debug, error, info}; use crate::subcommand::utils::LockError; use crate::{due_to, fl, msg}; diff --git a/src/main.rs b/src/main.rs index 5fe0dff0d..92bd4b0e6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,13 +1,13 @@ use std::env::{self, args}; use std::ffi::CString; -use std::fs::{create_dir_all, read_dir, remove_file}; use std::io::{self, IsTerminal, stderr, stdin}; use std::path::{Path, PathBuf}; use std::process::{Command, exit}; + +use std::sync::Arc; use std::sync::{LazyLock, OnceLock}; -use std::thread; -use std::time::{Duration, SystemTime, UNIX_EPOCH}; +use std::time::Duration; mod args; mod config; @@ -29,7 +29,7 @@ use clap_i18n_richformatter::{ClapI18nRichFormatter, init_clap_rich_formatter_lo use error::OutputError; use i18n_embed::{DesktopLanguageRequester, Localizer}; use lang::LANGUAGE_LOADER; -use oma_console::OmaLayer; +use oma_console::OmaFormatter; use oma_console::print::{OmaColorFormat, termbg}; use oma_console::writer::{MessageType, Writer, writeln_inner}; use oma_pm::apt::AptConfig; @@ -37,13 +37,16 @@ use oma_utils::OsRelease; use oma_utils::dbus::{create_dbus_connection, get_another_oma_status}; use reqwest::Client; use rustix::stdio::stdout; +// FIXME: `spdlog::error` is conflict with `mod error` +use spdlog::{ + Level, LevelFilter, Logger, debug, info, init_log_crate_proxy, + prelude::error as error2, + set_default_logger, + sink::{AsyncPoolSink, RotatingFileSink, RotationPolicy, StdStreamSink}, + warn, +}; use subcommand::utils::{LockError, is_terminal}; use tokio::runtime::Runtime; -use tracing::{debug, error, info, warn}; -use tracing_appender::non_blocking::WorkerGuard; -use tracing_subscriber::prelude::__tracing_subscriber_SubscriberExt; -use tracing_subscriber::util::SubscriberInitExt; -use tracing_subscriber::{EnvFilter, Layer, fmt}; use tui::Tui; use utils::{is_root, is_ssh_from_loginctl}; @@ -185,7 +188,7 @@ fn main() { console_subscriber::init(); #[cfg(not(feature = "tokio-console"))] - let (_guard, file) = init_logger(&oma, &config); + let file = init_logger(&oma, &config); debug!( "Run oma with args: {} (pid: {})", @@ -281,147 +284,72 @@ fn init_localizer() { LANGUAGE_LOADER.set_use_isolating(false); } -macro_rules! init_logger_inner { - ($context:ident, $non_blocking:ident) => {{ - let debug_filter: EnvFilter = "hyper=off,rustls=off,debug".parse().unwrap(); - $context - .with( - fmt::layer() - .with_file(true) - .with_writer($non_blocking) - .with_filter(debug_filter), - ) - .init() - }}; - ($context:ident) => {{ $context.init() }}; -} - -fn init_logger( - oma: &OhManagerAilurus, - config: &Config, -) -> (Option, anyhow::Result) { +fn init_logger(oma: &OhManagerAilurus, config: &Config) -> anyhow::Result { let debug = oma.global.debug; let dry_run = oma.global.dry_run; - let log_dir = if is_root() { + let log_file = (if is_root() { PathBuf::from("/var/log/oma") } else { dirs::state_dir() .expect("Failed to get state dir") .join("oma") - }; + }) + .join("oma.log"); - let log_file = create_log_file(&log_dir); - let mut log_guard = None; + // TODO: We need `spdlog-rs` implements `EnvFilter` first - if !debug && !dry_run { - let no_i18n_embd: EnvFilter = "i18n_embed=off,info".parse().unwrap(); + let (level_filter, formatter) = if !debug && !dry_run { + let level_filter = LevelFilter::MoreSevereEqual(Level::Info); - let context = tracing_subscriber::registry().with( - OmaLayer::new() - .with_ansi(enable_ansi(oma)) - .with_filter(no_i18n_embd), - ); + let formatter = OmaFormatter::new().with_ansi(enable_ansi(oma)); - if let Ok(log_file) = &log_file { - let file_appender = tracing_appender::rolling::never(&log_dir, log_file); - let (non_blocking, guard) = tracing_appender::non_blocking(file_appender); - init_logger_inner!(context, non_blocking); - log_guard = Some(guard); - } else { - init_logger_inner!(context); - } + (level_filter, formatter) } else { - let filter = EnvFilter::try_from_default_env() - .unwrap_or_else(|_| "hyper=off,rustls=off,debug".parse().unwrap()); - - let context = tracing_subscriber::registry().with( - fmt::layer() - .event_format( - tracing_subscriber::fmt::format() - .with_file(true) - .with_line_number(true) - .with_ansi(enable_ansi(oma)), - ) - .with_filter(filter), - ); - - if let Ok(log_file) = &log_file { - let file_appender = tracing_appender::rolling::never(&log_dir, log_file); - let (non_blocking, guard) = tracing_appender::non_blocking(file_appender); - init_logger_inner!(context, non_blocking); - log_guard = Some(guard); - } else { - init_logger_inner!(context); - } - } + let level_filter = LevelFilter::MoreSevereEqual(Level::Debug); - // 日志文件创建成功再去遍历文件 - if log_file.is_ok() { - thread::scope(|s| { - s.spawn(|| { - let mut v = vec![]; - let dirs = read_dir(&log_dir) - .expect("Failed to read log dir") - .collect::>(); - - for p in &dirs { - let Ok(p) = p else { - continue; - }; - - let file_name = p.file_name(); - let file_name = file_name.to_string_lossy(); - let Some((prefix, timestamp)) = file_name.rsplit_once('.') else { - continue; - }; - - if prefix != "oma.log" { - continue; - } + let formatter = OmaFormatter::new() + .with_ansi(enable_ansi(oma)) + .with_file(true) + .with_time(true); - let Ok(timestamp) = timestamp.parse::() else { - continue; - }; - - v.push(timestamp); - } - - if v.len() > config.save_log_count() { - v.sort_unstable_by(|a, b| b.cmp(a)); + (level_filter, formatter) + }; - for _ in 1..=(v.len() - config.save_log_count()) { - let Some(pop) = v.pop() else { - break; - }; + let rotating_sink = AsyncPoolSink::builder() + .sink(Arc::new( + RotatingFileSink::builder() + .base_path(&log_file) + .formatter(formatter.clone()) + // 10 MB + .rotation_policy(RotationPolicy::FileSize(10 * 1024 * 1024)) + .max_files(config.save_log_count()) + .build() + .unwrap(), + )) + .overflow_policy(spdlog::sink::OverflowPolicy::DropIncoming) + .build() + .unwrap(); - let log_path = log_dir.join(format!("oma.log.{pop}")); - if let Err(e) = remove_file(&log_path) { - debug!("Failed to remove file {}: {}", log_path.display(), e); - } - } - } - }); - }); - } + let stream_sink = StdStreamSink::builder() + .formatter(formatter) + .stdout() + .build() + .unwrap(); - (log_guard, log_file) -} + let mut logger_builder = Logger::builder(); -fn create_log_file(log_dir: &Path) -> anyhow::Result { - create_dir_all(log_dir)?; + logger_builder + .level_filter(level_filter) + .sink(Arc::new(stream_sink)) + .sink(Arc::new(rotating_sink)); - let log_file = format!( - "oma.log.{}", - SystemTime::now() - .duration_since(UNIX_EPOCH) - .unwrap() - .as_secs() - ); + let logger = logger_builder.build().unwrap(); - let log_file = log_dir.join(log_file).to_string_lossy().to_string(); + set_default_logger(Arc::new(logger)); + init_log_crate_proxy().unwrap(); - Ok(log_file) + Ok(log_file.to_string_lossy().to_string()) } #[inline] @@ -450,7 +378,7 @@ fn try_main( if !plugin.is_file() { plugin = plugin_fallback; if !plugin.is_file() { - error!("{}", fl!("custom-command-unknown", subcmd = subcommand)); + error2!("{}", fl!("custom-command-unknown", subcmd = subcommand)); return Ok(1); } } @@ -463,7 +391,7 @@ fn try_main( let status = process.status().unwrap().code().unwrap(); if status != 0 { - error!("{}", fl!("custom-command-applet-exception", s = status)); + error2!("{}", fl!("custom-command-applet-exception", s = status)); } Ok(status) @@ -555,7 +483,7 @@ fn color_formatter() -> &'static OmaColorFormat { fn display_error_and_can_unlock(e: OutputError) -> io::Result { let mut unlock = true; if !e.description.is_empty() { - error!("{e}"); + error2!("{e}"); let cause = Chain::new(&e).skip(1).collect::>(); let last_cause = cause.last(); @@ -602,7 +530,7 @@ fn display_error_and_can_unlock(e: OutputError) -> io::Result { unlock = false; if let Err(e) = find_another_oma() { debug!("{e}"); - error!("{}", fl!("failed-to-lock-oma")); + error2!("{}", fl!("failed-to-lock-oma")); } } } @@ -625,7 +553,7 @@ async fn find_another_oma_inner() -> Result<(), OutputError> { pkg => fl!("status-package", pkg = pkg), }; - error!("{}", fl!("another-oma-is-running", s = status)); + error2!("{}", fl!("another-oma-is-running", s = status)); Ok(()) } diff --git a/src/path_completions.rs b/src/path_completions.rs index 5b37f1a71..c91df1de5 100644 --- a/src/path_completions.rs +++ b/src/path_completions.rs @@ -6,7 +6,7 @@ use clap_complete::{CompletionCandidate, engine::ValueCompleter}; use clap_lex::OsStrExt; use dirs::home_dir; use rustix::path::Arg; -use tracing::debug; +use spdlog::debug; /// Complete a value as a [`std::path::Path`] /// diff --git a/src/pb.rs b/src/pb.rs index f925604ca..3e82c1d2c 100644 --- a/src/pb.rs +++ b/src/pb.rs @@ -19,7 +19,7 @@ use crate::{WRITER, error::Chain, fl, install_progress::osc94_progress, msg, uti use crate::{color_formatter, error::OutputError}; use oma_refresh::db::Event as RefreshEvent; use oma_utils::human_bytes::HumanBytes; -use tracing::{debug, error, info, warn}; +use spdlog::{debug, error, info, warn}; pub trait RenderPackagesDownloadProgress { fn render_progress(&mut self, rx: &flume::Receiver, download_only: bool); @@ -297,7 +297,7 @@ impl OmaMultiProgressBar { self.info(&fl!("can-not-get-source-next-url")); } Event::DownloadDone { index: _, msg } => { - tracing::debug!("Downloaded {msg}"); + debug!("Downloaded {msg}"); } Event::AllDone => { if let Some(gpb) = &self.pb_map.get(&0) { diff --git a/src/subcommand/clean.rs b/src/subcommand/clean.rs index 5b843fe77..604bc5332 100644 --- a/src/subcommand/clean.rs +++ b/src/subcommand/clean.rs @@ -3,13 +3,13 @@ use std::io::ErrorKind; use std::path::{Path, PathBuf}; use crate::subcommand::utils::create_progress_spinner; +use crate::success; use crate::{config::Config, fl}; -use crate::{error, success}; use clap::Args; use fs_extra::dir::get_size; use oma_console::indicatif::HumanBytes; use oma_pm::apt::{AptConfig, OmaApt, OmaAptArgs}; -use tracing::{debug, info}; +use spdlog::{debug, error, info}; use crate::{error::OutputError, utils::root}; diff --git a/src/subcommand/command_not_found.rs b/src/subcommand/command_not_found.rs index f5ab92ddb..d083fb797 100644 --- a/src/subcommand/command_not_found.rs +++ b/src/subcommand/command_not_found.rs @@ -7,7 +7,8 @@ use oma_console::print::Action; use oma_contents::OmaContentsError; use oma_contents::searcher::{Mode, search}; use oma_pm::apt::{AptConfig, OmaApt, OmaAptArgs}; -use tracing::error; + +use spdlog::error; use crate::config::Config; use crate::error::OutputError; diff --git a/src/subcommand/download.rs b/src/subcommand/download.rs index 7d5f963c3..680055d79 100644 --- a/src/subcommand/download.rs +++ b/src/subcommand/download.rs @@ -6,7 +6,7 @@ use clap_complete::ArgValueCompleter; use flume::unbounded; use oma_pm::apt::{AptConfig, DownloadConfig, OmaApt, OmaAptArgs}; use oma_pm::matches::PackagesMatcher; -use tracing::error; +use spdlog::error; use crate::config::Config; use crate::pb::{NoProgressBar, OmaMultiProgressBar, RenderPackagesDownloadProgress}; diff --git a/src/subcommand/history.rs b/src/subcommand/history.rs index ab78c6f96..85c04ef20 100644 --- a/src/subcommand/history.rs +++ b/src/subcommand/history.rs @@ -9,7 +9,7 @@ use oma_pm::matches::{GetArchMethod, PackagesMatcher}; use oma_pm::oma_apt::PackageSort; use oma_pm::pkginfo::PtrIsNone; use oma_pm::{apt::OmaApt, pkginfo::OmaPackage}; -use tracing::warn; +use spdlog::warn; use std::path::{Path, PathBuf}; use std::sync::atomic::Ordering; @@ -310,7 +310,6 @@ impl CliExecuter for Undo { if code == 0 && (!opt_in.is_empty() || !opt_out.is_empty()) { use crate::RT; use crate::fl; - use tracing::warn; let arch = oma_utils::dpkg::dpkg_arch(&sysroot)?; let mut tm = oma_topics::TopicManager::new_blocking( diff --git a/src/subcommand/install.rs b/src/subcommand/install.rs index 4945be821..604baed91 100644 --- a/src/subcommand/install.rs +++ b/src/subcommand/install.rs @@ -7,8 +7,7 @@ use oma_pm::apt::OmaApt; use oma_pm::apt::OmaAptArgs; use oma_pm::matches::GetArchMethod; use oma_pm::matches::PackagesMatcher; -use tracing::info; -use tracing::warn; +use spdlog::{info, warn}; use crate::HTTP_CLIENT; use crate::args::ARG_HELP_HEADING; diff --git a/src/subcommand/list.rs b/src/subcommand/list.rs index b17e3cc15..0bac841dd 100644 --- a/src/subcommand/list.rs +++ b/src/subcommand/list.rs @@ -7,7 +7,7 @@ use oma_pm::{ apt::{AptConfig, OmaApt, OmaAptArgs}, oma_apt::{PackageSort, PkgCurrentState, PkgSelectedState}, }; -use tracing::info; +use spdlog::info; use crate::{NOT_DISPLAY_ABORT, fl, utils::pkgnames_completions}; use crate::{color_formatter, config::Config, error::OutputError, table::PagerPrinter}; diff --git a/src/subcommand/mark.rs b/src/subcommand/mark.rs index 96e7e8c1e..88e9da4f3 100644 --- a/src/subcommand/mark.rs +++ b/src/subcommand/mark.rs @@ -7,7 +7,7 @@ use oma_pm::{ apt::{AptConfig, OmaApt, OmaAptArgs}, matches::{GetArchMethod, PackagesMatcher}, }; -use tracing::info; +use spdlog::info; use crate::{ color_formatter, diff --git a/src/subcommand/mirror.rs b/src/subcommand/mirror.rs index 4f0649aff..f86f5683e 100644 --- a/src/subcommand/mirror.rs +++ b/src/subcommand/mirror.rs @@ -28,9 +28,8 @@ use oma_utils::dpkg::dpkg_arch; use reqwest::blocking; use sha2::Digest; use sha2::Sha256; +use spdlog::{error, info, warn}; use tabled::Tabled; -use tracing::warn; -use tracing::{error, info}; use crate::APP_USER_AGENT; use crate::HTTP_CLIENT; diff --git a/src/subcommand/refresh.rs b/src/subcommand/refresh.rs index b9a609d7d..bbbd4b3bd 100644 --- a/src/subcommand/refresh.rs +++ b/src/subcommand/refresh.rs @@ -2,7 +2,7 @@ use std::path::PathBuf; use clap::Args; use oma_pm::apt::{AptConfig, OmaApt, OmaAptArgs}; -use tracing::info; +use spdlog::info; use crate::config::Config; use crate::{HTTP_CLIENT, fl, success}; diff --git a/src/subcommand/remove.rs b/src/subcommand/remove.rs index b8d4e0700..a60bdacf3 100644 --- a/src/subcommand/remove.rs +++ b/src/subcommand/remove.rs @@ -8,7 +8,7 @@ use dialoguer::theme::ColorfulTheme; use dialoguer::{Confirm, Input}; use oma_pm::apt::{AptConfig, OmaApt, OmaAptArgs}; use oma_pm::matches::{GetArchMethod, PackagesMatcher}; -use tracing::{info, warn}; +use spdlog::{info, warn}; use crate::config::Config; use crate::fl; diff --git a/src/subcommand/show.rs b/src/subcommand/show.rs index 4b303930c..b84b35f94 100644 --- a/src/subcommand/show.rs +++ b/src/subcommand/show.rs @@ -10,7 +10,7 @@ use oma_pm::{ oma_apt::records::RecordField, pkginfo::{AptSource, OmaPackage}, }; -use tracing::info; +use spdlog::info; use crate::{config::Config, error::OutputError, utils::pkgnames_and_path_completions}; diff --git a/src/subcommand/size_analyzer.rs b/src/subcommand/size_analyzer.rs index a93ace64f..60232a049 100644 --- a/src/subcommand/size_analyzer.rs +++ b/src/subcommand/size_analyzer.rs @@ -24,10 +24,10 @@ use ratatui::{ layout::{Direction, Layout}, prelude::Backend, }; +use spdlog::info; use std::io::Write; use tabled::builder::Builder; use tabled::settings::{Alignment, Settings}; -use tracing::info; use crate::utils::{dbus_check, is_root}; use crate::{CliExecuter, config::Config, error::OutputError}; diff --git a/src/subcommand/topics.rs b/src/subcommand/topics.rs index a1ff2b829..f58fde3ac 100644 --- a/src/subcommand/topics.rs +++ b/src/subcommand/topics.rs @@ -19,9 +19,9 @@ use oma_pm::{ }; use oma_utils::dpkg::dpkg_arch; use once_cell::sync::OnceCell; +use spdlog::{debug, error, info, warn}; use sysinfo::System; use tokio::task::spawn_blocking; -use tracing::{debug, error, info, warn}; use crate::{ HTTP_CLIENT, NOT_ALLOW_CTRLC, RT, diff --git a/src/subcommand/tree.rs b/src/subcommand/tree.rs index 63f181c4b..38195ed1f 100644 --- a/src/subcommand/tree.rs +++ b/src/subcommand/tree.rs @@ -16,7 +16,7 @@ use oma_pm::{ oma_apt::{BaseDep, Package, Version}, pkginfo::OmaDepType, }; -use tracing::{debug, trace}; +use spdlog::{debug, trace}; use crate::{ CliExecuter, config::Config, error::OutputError, fl, table::oma_display_with_normal_output, diff --git a/src/subcommand/upgrade.rs b/src/subcommand/upgrade.rs index 529f04db8..1be2d8063 100644 --- a/src/subcommand/upgrade.rs +++ b/src/subcommand/upgrade.rs @@ -2,7 +2,6 @@ use crate::subcommand::utils::CommitChanges; use crate::utils::pkgnames_and_path_completions; use clap_complete::ArgValueCompleter; use std::path::PathBuf; -use tracing::debug; use apt_auth_config::AuthConfig; use clap::Args; @@ -13,9 +12,7 @@ use oma_pm::apt::Upgrade as AptUpgrade; use oma_pm::matches::GetArchMethod; use oma_pm::matches::PackagesMatcher; - -use tracing::info; -use tracing::warn; +use spdlog::{debug, info, warn}; use crate::HTTP_CLIENT; use crate::config::Config; diff --git a/src/subcommand/utils.rs b/src/subcommand/utils.rs index 380267b1e..58065e5fd 100644 --- a/src/subcommand/utils.rs +++ b/src/subcommand/utils.rs @@ -77,12 +77,9 @@ use oma_refresh::db::OmaRefresh; use oma_utils::dpkg::dpkg_arch; use reqwest::Client; use std::fmt::Display; -use tracing::debug; -use tracing::error; -use tracing::info; -use tracing::warn; use super::remove::ask_user_do_as_i_say; +use spdlog::{debug, error, info, warn}; pub(crate) fn handle_no_result(no_result: Vec<&str>, no_progress: bool) -> Result<(), OutputError> { if no_result.is_empty() { diff --git a/src/tui/mod.rs b/src/tui/mod.rs index 77c929964..40bd73d48 100644 --- a/src/tui/mod.rs +++ b/src/tui/mod.rs @@ -10,7 +10,7 @@ use oma_pm::{ search::IndiciumSearch, }; use oma_utils::dbus::{InhibitTypeUnion, take_wake_lock}; -use tracing::info; +use spdlog::info; use tui_inner::{Task, Tui as TuiInner}; use crate::{ diff --git a/src/utils.rs b/src/utils.rs index e9f00aa11..f00f8c85c 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -30,7 +30,7 @@ use oma_utils::{ zbus::zvariant::OwnedFd, }; use rustix::process; -use tracing::{debug, info, warn}; +use spdlog::{debug, info, warn}; type Result = std::result::Result; @@ -245,7 +245,7 @@ macro_rules! msg { ($($arg:tt)+) => { use oma_console::writer::Writeln as _; let s = format!($($arg)+); - tracing::debug!("{s}"); + spdlog::debug!("{s}"); $crate::WRITER.writeln("", &s).ok(); }; } @@ -256,7 +256,7 @@ macro_rules! success { ($($arg:tt)+) => { use oma_console::writer::Writeln as _; let s = format!($($arg)+); - tracing::debug!("{s}"); + spdlog::debug!("{s}"); $crate::WRITER.writeln(&oma_console::console::style("SUCCESS").green().bold().to_string(), &s).ok(); }; } @@ -267,7 +267,7 @@ macro_rules! due_to { ($($arg:tt)+) => { use oma_console::writer::Writeln as _; let s = format!($($arg)+); - tracing::debug!("{s}"); + spdlog::debug!("{s}"); $crate::WRITER.writeln(&oma_console::console::style("DUE TO").yellow().bold().to_string(), &s).ok(); }; }