diff --git a/appmgr/Cargo.lock b/appmgr/Cargo.lock index f46f3e772..954ae55b0 100644 --- a/appmgr/Cargo.lock +++ b/appmgr/Cargo.lock @@ -32,9 +32,9 @@ dependencies = [ [[package]] name = "ahash" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43bb833f0bf979d8475d38fbf09ed3b8a55e1885fe93ad3f93239fc6a4f17b98" +checksum = "991984e3fd003e7ba02eb724f87a0f997b78677c46c0e91f8424ad7394c9886a" dependencies = [ "getrandom 0.2.3", "once_cell", @@ -102,8 +102,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "44318e776df68115a881de9a8fd1b9e53368d7a4a5ce4cc48517da3393233a5e" dependencies = [ "proc-macro2 1.0.29", - "quote 1.0.9", - "syn 1.0.77", + "quote 1.0.10", + "syn 1.0.80", ] [[package]] @@ -208,7 +208,7 @@ dependencies = [ "log", "peeking_take_while", "proc-macro2 1.0.29", - "quote 1.0.9", + "quote 1.0.10", "regex", "rustc-hash", "shlex", @@ -354,9 +354,9 @@ checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" [[package]] name = "cc" -version = "1.0.70" +version = "1.0.71" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26a6ce4b6a484fa3edb70f7efa6fc430fd2b87285fe8b84304fd0936faa0dc0" +checksum = "79c2681d6594606957bbb8631c4b90a7fcaaa72cdb714743a437b156d6a7eedd" [[package]] name = "cexpr" @@ -686,9 +686,9 @@ dependencies = [ "fnv", "ident_case", "proc-macro2 1.0.29", - "quote 1.0.9", + "quote 1.0.10", "strsim 0.10.0", - "syn 1.0.77", + "syn 1.0.80", ] [[package]] @@ -698,8 +698,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ade7bff147130fe5e6d39f089c6bd49ec0250f35d70b2eebf72afdfc919f15cc" dependencies = [ "darling_core", - "quote 1.0.9", - "syn 1.0.77", + "quote 1.0.10", + "syn 1.0.80", ] [[package]] @@ -710,9 +710,9 @@ checksum = "40eebddd2156ce1bb37b20bbe5151340a31828b1f2d22ba4141f3531710e38df" dependencies = [ "convert_case", "proc-macro2 1.0.29", - "quote 1.0.9", + "quote 1.0.10", "rustc_version 0.3.3", - "syn 1.0.77", + "syn 1.0.80", ] [[package]] @@ -853,7 +853,7 @@ dependencies = [ "lazy_static", "libc", "log", - "nix 0.22.1", + "nix 0.22.2", "num", "openssh-keys", "openssl", @@ -1111,8 +1111,8 @@ dependencies = [ "autocfg", "proc-macro-hack", "proc-macro2 1.0.29", - "quote 1.0.9", - "syn 1.0.77", + "quote 1.0.10", + "syn 1.0.80", ] [[package]] @@ -1204,8 +1204,8 @@ checksum = "fe69f1cbdb6e28af2bac214e943b99ce8a0a06b447d15d3e61161b0423139f3f" dependencies = [ "proc-macro-hack", "proc-macro2 1.0.29", - "quote 1.0.9", - "syn 1.0.77", + "quote 1.0.10", + "syn 1.0.80", ] [[package]] @@ -1216,9 +1216,9 @@ checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" [[package]] name = "h2" -version = "0.3.4" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7f3675cfef6a30c8031cf9e6493ebdc3bb3272a3fea3923c4210d1830e6a472" +checksum = "6c06815895acec637cd6ed6e9662c935b866d20a106f8361892893a7d9234964" dependencies = [ "bytes 1.1.0", "fnv", @@ -1608,9 +1608,9 @@ checksum = "dd8f7255a17a627354f321ef0055d63b898c6fb27eff628af4d1b66b7331edf6" [[package]] name = "libloading" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f84d96438c15fcd6c3f244c8fce01d1e2b9c6b5623e9c711dc9286d8fc92d6a" +checksum = "c0cf036d15402bea3c5d4de17b3fce76b3e4a56ebc1f577be0e7a72f7c607cf0" dependencies = [ "cfg-if 1.0.0", "winapi", @@ -1700,9 +1700,9 @@ checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" [[package]] name = "minimal-lexical" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c835948974f68e0bd58636fc6c5b1fbff7b297e3046f11b3b3c18bbac012c6d" +checksum = "9c64630dcdd71f1a64c435f54885086a0de5d6a12d104d69b165fb7d5286d677" [[package]] name = "miniz_oxide" @@ -1774,9 +1774,9 @@ dependencies = [ [[package]] name = "nix" -version = "0.22.1" +version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7555d6c7164cc913be1ce7f95cbecdabda61eb2ccd89008524af306fb7f5031" +checksum = "d3bb9a13fa32bc5aeb64150cd3f32d6cf4c748f8f8a417cce5d2eb976a8370ba" dependencies = [ "bitflags", "cc", @@ -2044,7 +2044,7 @@ dependencies = [ "json-ptr", "lazy_static", "log", - "nix 0.22.1", + "nix 0.22.2", "patch-db-macro", "serde", "serde_cbor 0.11.1", @@ -2059,7 +2059,7 @@ version = "0.1.0" dependencies = [ "patch-db-macro-internals", "proc-macro2 1.0.29", - "syn 1.0.77", + "syn 1.0.80", ] [[package]] @@ -2068,8 +2068,8 @@ version = "0.1.0" dependencies = [ "heck", "proc-macro2 1.0.29", - "quote 1.0.9", - "syn 1.0.77", + "quote 1.0.10", + "syn 1.0.80", ] [[package]] @@ -2146,8 +2146,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e8fe8163d14ce7f0cdac2e040116f22eac817edabff0be91e8aff7e9accf389" dependencies = [ "proc-macro2 1.0.29", - "quote 1.0.9", - "syn 1.0.77", + "quote 1.0.10", + "syn 1.0.80", ] [[package]] @@ -2312,9 +2312,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.9" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" +checksum = "38bc8cc6a5f2e3655e0899c1b848643b2562f853f114bfec7be120678e3ace05" dependencies = [ "proc-macro2 1.0.29", ] @@ -2488,9 +2488,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.11.4" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "246e9f61b9bb77df069a947682be06e31ac43ea37862e244a69f177694ea6d22" +checksum = "51c732d463dd300362ffb44b7b125f299c23d2990411a4253824630ebc7467fb" dependencies = [ "base64", "bytes 1.1.0", @@ -2588,7 +2588,7 @@ version = "0.1.0" dependencies = [ "proc-macro2 1.0.29", "rpc-toolkit-macro-internals", - "syn 1.0.77", + "syn 1.0.80", ] [[package]] @@ -2596,8 +2596,8 @@ name = "rpc-toolkit-macro-internals" version = "0.1.0" dependencies = [ "proc-macro2 1.0.29", - "quote 1.0.9", - "syn 1.0.77", + "quote 1.0.10", + "syn 1.0.80", ] [[package]] @@ -2810,8 +2810,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d7bc1a1ab1961464eae040d96713baa5a724a8152c1222492465b54322ec508b" dependencies = [ "proc-macro2 1.0.29", - "quote 1.0.9", - "syn 1.0.77", + "quote 1.0.10", + "syn 1.0.80", ] [[package]] @@ -2858,8 +2858,8 @@ checksum = "98c1fcca18d55d1763e1c16873c4bde0ac3ef75179a28c7b372917e0494625be" dependencies = [ "darling", "proc-macro2 1.0.29", - "quote 1.0.9", - "syn 1.0.77", + "quote 1.0.10", + "syn 1.0.80", ] [[package]] @@ -2973,9 +2973,9 @@ checksum = "c307a32c1c5c437f38c7fd45d753050587732ba8628319fbdf12a7e289ccc590" [[package]] name = "smallvec" -version = "1.6.1" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" +checksum = "1ecab6c735a6bb4139c0caafd0cc3635748bbb3acf4550e8138122099251f309" [[package]] name = "socket2" @@ -3006,9 +3006,9 @@ dependencies = [ [[package]] name = "sqlx" -version = "0.5.7" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e4b94ab0f8c21ee4899b93b06451ef5d965f1a355982ee73684338228498440" +checksum = "7911b0031a0247af40095838002999c7a52fba29d9739e93326e71a5a1bc9d43" dependencies = [ "sqlx-core", "sqlx-macros", @@ -3016,9 +3016,9 @@ dependencies = [ [[package]] name = "sqlx-core" -version = "0.5.7" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec28b91a01e1fe286d6ba66f68289a2286df023fc97444e1fd86c2fd6d5dc026" +checksum = "aec89bfaca8f7737439bad16d52b07f1ccd0730520d3bf6ae9d069fe4b641fb1" dependencies = [ "ahash", "atoi", @@ -3037,6 +3037,7 @@ dependencies = [ "futures-util", "hashlink", "hex", + "indexmap", "itoa", "libc", "libsqlite3-sys", @@ -3062,32 +3063,31 @@ dependencies = [ [[package]] name = "sqlx-macros" -version = "0.5.7" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dc33c35d54774eed73d54568d47a6ac099aed8af5e1556a017c131be88217d5" +checksum = "584866c833511b1a152e87a7ee20dee2739746f60c858b3c5209150bc4b466f5" dependencies = [ "dotenv", "either", - "futures", "heck", "hex", "once_cell", "proc-macro2 1.0.29", - "quote 1.0.9", + "quote 1.0.10", "serde", "serde_json", "sha2", "sqlx-core", "sqlx-rt", - "syn 1.0.77", + "syn 1.0.80", "url", ] [[package]] name = "sqlx-rt" -version = "0.5.7" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14302b678d9c76b28f2e60115211e25e0aabc938269991745a169753dc00e35c" +checksum = "0d1bd069de53442e7a320f525a6d4deb8bb0621ac7a55f7eccbc2b58b57f43d0" dependencies = [ "once_cell", "tokio 1.12.0", @@ -3143,10 +3143,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef" dependencies = [ "proc-macro2 1.0.29", - "quote 1.0.9", + "quote 1.0.10", "serde", "serde_derive", - "syn 1.0.77", + "syn 1.0.80", ] [[package]] @@ -3157,12 +3157,12 @@ checksum = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11" dependencies = [ "base-x", "proc-macro2 1.0.29", - "quote 1.0.9", + "quote 1.0.10", "serde", "serde_derive", "serde_json", "sha1", - "syn 1.0.77", + "syn 1.0.80", ] [[package]] @@ -3224,24 +3224,24 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.77" +version = "1.0.80" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5239bc68e0fef57495900cfea4e8dc75596d9a319d7e16b1e0a440d24e6fe0a0" +checksum = "d010a1623fbd906d51d650a9916aaefc05ffa0e4053ff7fe601167f3e715d194" dependencies = [ "proc-macro2 1.0.29", - "quote 1.0.9", + "quote 1.0.10", "unicode-xid 0.2.2", ] [[package]] name = "synstructure" -version = "0.12.5" +version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "474aaa926faa1603c40b7885a9eaea29b444d1cb2850cb7c0e37bb1a4182f4fa" +checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ "proc-macro2 1.0.29", - "quote 1.0.9", - "syn 1.0.77", + "quote 1.0.10", + "syn 1.0.80", "unicode-xid 0.2.2", ] @@ -3318,22 +3318,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.29" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "602eca064b2d83369e2b2f34b09c70b605402801927c65c11071ac911d299b88" +checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.29" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bad553cc2c78e8de258400763a647e80e6d1b31ee237275d756f6836d204494c" +checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" dependencies = [ "proc-macro2 1.0.29", - "quote 1.0.9", - "syn 1.0.77", + "quote 1.0.10", + "syn 1.0.80", ] [[package]] @@ -3400,9 +3400,9 @@ checksum = "fd3c141a1b43194f3f56a1411225df8646c55781d5f26db825b3d98507eb482f" dependencies = [ "proc-macro-hack", "proc-macro2 1.0.29", - "quote 1.0.9", + "quote 1.0.10", "standback", - "syn 1.0.77", + "syn 1.0.80", ] [[package]] @@ -3477,13 +3477,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "1.3.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54473be61f4ebe4efd09cec9bd5d16fa51d70ea0192213d754d2d500457db110" +checksum = "154794c8f499c2619acd19e839294703e9e32e7630ef5f46ea80d4ef0fbee5eb" dependencies = [ "proc-macro2 1.0.29", - "quote 1.0.9", - "syn 1.0.77", + "quote 1.0.10", + "syn 1.0.80", ] [[package]] @@ -3609,9 +3609,9 @@ checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" [[package]] name = "tracing" -version = "0.1.28" +version = "0.1.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84f96e095c0c82419687c20ddf5cb3eadb61f4e1405923c9dc8e53a1adacbda8" +checksum = "375a639232caf30edfc78e8d89b2d4c375515393e7af7e16f01cd96917fb2105" dependencies = [ "cfg-if 1.0.0", "pin-project-lite 0.2.7", @@ -3626,15 +3626,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f4f480b8f81512e825f337ad51e94c1eb5d3bbdf2b363dcd01e2b19a9ffe3f8e" dependencies = [ "proc-macro2 1.0.29", - "quote 1.0.9", - "syn 1.0.77", + "quote 1.0.10", + "syn 1.0.80", ] [[package]] name = "tracing-core" -version = "0.1.20" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46125608c26121c81b0c6d693eab5a420e416da7e43c426d2e8f7df8da8a3acf" +checksum = "1f4ed65637b8390770814083d20756f87bfa2c21bf2f110babdc5438351746e4" dependencies = [ "lazy_static", ] @@ -3704,9 +3704,9 @@ dependencies = [ [[package]] name = "treediff" -version = "4.0.0" +version = "4.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9975655adeb6c47931d6bcd4173a493a1feb510a549f9e5f41f6f1f9fc24836f" +checksum = "52984d277bdf2a751072b5df30ec0377febdb02f7696d64c2d7d54630bac4303" dependencies = [ "serde_json", ] @@ -3744,8 +3744,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a46ee5bd706ff79131be9c94e7edcb82b703c487766a114434e5790361cf08c5" dependencies = [ "proc-macro2 1.0.29", - "quote 1.0.9", - "syn 1.0.77", + "quote 1.0.10", + "syn 1.0.80", ] [[package]] @@ -3762,9 +3762,9 @@ checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c" [[package]] name = "unicode-bidi" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "246f4c42e67e7a4e3c6106ff716a5d067d4132a642840b242e357e468a2a0085" +checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f" [[package]] name = "unicode-normalization" @@ -3886,8 +3886,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "632f73e236b219150ea279196e54e610f5dbafa5d61786303d4da54f84e47fce" dependencies = [ "cfg-if 1.0.0", - "serde", - "serde_json", "wasm-bindgen-macro", ] @@ -3901,8 +3899,8 @@ dependencies = [ "lazy_static", "log", "proc-macro2 1.0.29", - "quote 1.0.9", - "syn 1.0.77", + "quote 1.0.10", + "syn 1.0.80", "wasm-bindgen-shared", ] @@ -3924,7 +3922,7 @@ version = "0.2.78" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d56146e7c495528bf6587663bea13a8eb588d39b36b679d83972e1a2dbbdacf9" dependencies = [ - "quote 1.0.9", + "quote 1.0.10", "wasm-bindgen-macro-support", ] @@ -3935,8 +3933,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7803e0eea25835f8abdc585cd3021b3deb11543c6fe226dcd30b228857c5c5ab" dependencies = [ "proc-macro2 1.0.29", - "quote 1.0.9", - "syn 1.0.77", + "quote 1.0.10", + "syn 1.0.80", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -3987,9 +3985,9 @@ dependencies = [ [[package]] name = "whoami" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cabfe22aa4936611957e0b5ad9ed0472ac52b2bfb9aedac4a3f3a91a03bd1ff0" +checksum = "483a59fee1a93fec90eb08bc2eb4315ef10f4ebc478b3a5fadc969819cb66117" dependencies = [ "wasm-bindgen", "web-sys", @@ -4085,7 +4083,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bdff2024a851a322b08f179173ae2ba620445aef1e838f0c196820eade4ae0c7" dependencies = [ "proc-macro2 1.0.29", - "quote 1.0.9", - "syn 1.0.77", + "quote 1.0.10", + "syn 1.0.80", "synstructure", ] diff --git a/appmgr/embassy-init.service b/appmgr/embassy-init.service index adfebf78c..f7aee008d 100644 --- a/appmgr/embassy-init.service +++ b/appmgr/embassy-init.service @@ -6,6 +6,7 @@ Wants=avahi-daemon.service nginx.service tor.service [Service] Type=oneshot +Environment=RUST_LOG=embassy_init=info,embassy=info ExecStart=/usr/local/bin/embassy-init -vvv RemainAfterExit=true diff --git a/appmgr/embassyd.service b/appmgr/embassyd.service index 0638e95f0..4e09f7fe8 100644 --- a/appmgr/embassyd.service +++ b/appmgr/embassyd.service @@ -5,7 +5,8 @@ Requires=embassy-init.service [Service] Type=simple -ExecStart=/usr/local/bin/embassyd -vvv +Environment=RUST_LOG=embassyd=info,embassy=info +ExecStart=/usr/local/bin/embassyd Restart=always RestartSec=3 diff --git a/appmgr/src/bin/embassy-cli.rs b/appmgr/src/bin/embassy-cli.rs index 092129f3d..aeed158c8 100644 --- a/appmgr/src/bin/embassy-cli.rs +++ b/appmgr/src/bin/embassy-cli.rs @@ -5,7 +5,6 @@ use embassy::Error; use rpc_toolkit::run_cli; use rpc_toolkit::yajrc::RpcError; use serde_json::Value; -use tracing::metadata::LevelFilter; fn inner_main() -> Result<(), Error> { run_cli!({ @@ -18,36 +17,20 @@ fn inner_main() -> Result<(), Error> { .long("config") .takes_value(true), ) - .arg( - clap::Arg::with_name("verbosity") - .short("v") - .multiple(true) - .takes_value(false), - ) .arg(Arg::with_name("host").long("host").short("h").takes_value(true)) .arg(Arg::with_name("proxy").long("proxy").short("p").takes_value(true)), context: matches => { - EmbassyLogger::init( - match matches.occurrences_of("verbosity") { - 0 => LevelFilter::OFF, - 1 => LevelFilter::ERROR, - 2 => LevelFilter::WARN, - 3 => LevelFilter::INFO, - 4 => LevelFilter::DEBUG, - _ => LevelFilter::TRACE, - }, - Default::default(), - None, - false, - Default::default(), - ); + EmbassyLogger::no_sharing(); CliContext::init(matches)? }, exit: |e: RpcError| { match e.data { Some(Value::String(s)) => eprintln!("{}: {}", e.message, s), Some(Value::Object(o)) => if let Some(Value::String(s)) = o.get("details") { - eprintln!("{}: {}", e.message, s) + eprintln!("{}: {}", e.message, s); + if let Some(Value::String(s)) = o.get("debug") { + tracing::debug!("{}", s) + } } Some(a) => eprintln!("{}: {}", e.message, a), None => eprintln!("{}", e.message), diff --git a/appmgr/src/bin/embassy-init.rs b/appmgr/src/bin/embassy-init.rs index 57368feb9..dc9206b06 100644 --- a/appmgr/src/bin/embassy-init.rs +++ b/appmgr/src/bin/embassy-init.rs @@ -1,10 +1,8 @@ use std::path::Path; -use color_eyre::eyre::eyre; use embassy::context::rpc::RpcContextConfig; use embassy::context::{DiagnosticContext, SetupContext}; use embassy::db::model::ServerStatus; -use embassy::db::DatabaseModel; use embassy::disk::main::DEFAULT_PASSWORD; use embassy::middleware::cors::cors; use embassy::middleware::diagnostic::diagnostic; @@ -13,12 +11,11 @@ use embassy::middleware::encrypt::encrypt; use embassy::net::mdns::MdnsController; use embassy::sound::MARIO_COIN; use embassy::util::logger::EmbassyLogger; -use embassy::util::{Invoke, Version}; +use embassy::util::Invoke; use embassy::{Error, ResultExt}; use http::StatusCode; use rpc_toolkit::rpc_server; use tokio::process::Command; -use tracing::metadata::LevelFilter; fn status_fn(_: i32) -> StatusCode { StatusCode::OK @@ -255,36 +252,9 @@ fn main() { .long("config") .takes_value(true), ) - .arg( - clap::Arg::with_name("verbosity") - .short("v") - .multiple(true) - .takes_value(false), - ) .get_matches(); - // simple_logging::log_to_stderr(match matches.occurrences_of("verbosity") { - // 0 => LevelFilter::OFF, - // 1 => LevelFilter::ERROR, - // 2 => LevelFilter::WARN, - // 3 => LevelFilter::INFO, - // 4 => LevelFilter::DEBUG, - // _ => LevelFilter::TRACE, - // }); - EmbassyLogger::init( - match matches.occurrences_of("verbosity") { - 0 => LevelFilter::OFF, - 1 => LevelFilter::ERROR, - 2 => LevelFilter::WARN, - 3 => LevelFilter::INFO, - 4 => LevelFilter::DEBUG, - _ => LevelFilter::TRACE, - }, - Default::default(), - None, - false, - Default::default(), - ); + EmbassyLogger::no_sharing(); let cfg_path = matches.value_of("config"); let res = { diff --git a/appmgr/src/bin/embassy-sdk.rs b/appmgr/src/bin/embassy-sdk.rs index 0d2c4d8d2..cd4ea5c54 100644 --- a/appmgr/src/bin/embassy-sdk.rs +++ b/appmgr/src/bin/embassy-sdk.rs @@ -1,4 +1,5 @@ use embassy::context::SdkContext; +use embassy::util::logger::EmbassyLogger; use embassy::Error; use rpc_toolkit::run_cli; use rpc_toolkit::yajrc::RpcError; @@ -14,29 +15,19 @@ fn inner_main() -> Result<(), Error> { .short("c") .long("config") .takes_value(true), - ) - .arg( - clap::Arg::with_name("verbosity") - .short("v") - .multiple(true) - .takes_value(false), ), context: matches => { - simple_logging::log_to_stderr(match matches.occurrences_of("verbosity") { - 0 => tracing::LevelFilter::Off, - 1 => tracing::LevelFilter::Error, - 2 => tracing::LevelFilter::Warn, - 3 => tracing::LevelFilter::Info, - 4 => tracing::LevelFilter::Debug, - _ => tracing::LevelFilter::Trace, - }); + EmbassyLogger::no_sharing(); SdkContext::init(matches)? }, exit: |e: RpcError| { match e.data { Some(Value::String(s)) => eprintln!("{}: {}", e.message, s), Some(Value::Object(o)) => if let Some(Value::String(s)) = o.get("details") { - eprintln!("{}: {}", e.message, s) + eprintln!("{}: {}", e.message, s); + if let Some(Value::String(s)) = o.get("debug") { + tracing::debug!("{}", s) + } } Some(a) => eprintln!("{}: {}", e.message, a), None => eprintln!("{}", e.message), diff --git a/appmgr/src/bin/embassyd.rs b/appmgr/src/bin/embassyd.rs index d83ed661d..14c984049 100644 --- a/appmgr/src/bin/embassyd.rs +++ b/appmgr/src/bin/embassyd.rs @@ -1,7 +1,6 @@ -use std::collections::BTreeMap; use std::time::Duration; -use color_eyre::eyre::{self, eyre}; +use color_eyre::eyre::eyre; use embassy::context::{DiagnosticContext, RpcContext}; use embassy::db::subscribe; use embassy::middleware::auth::auth; @@ -21,7 +20,6 @@ use rpc_toolkit::rpc_server; use tokio::process::Command; use tokio::signal::unix::signal; use tracing::instrument; -use tracing::metadata::LevelFilter; fn status_fn(_: i32) -> StatusCode { StatusCode::OK @@ -36,12 +34,8 @@ fn err_to_500(e: Error) -> Response { } #[instrument] -async fn inner_main( - cfg_path: Option<&str>, - log_level: LevelFilter, - module_logging: BTreeMap, -) -> Result, Error> { - let rpc_ctx = RpcContext::init(cfg_path, log_level, module_logging).await?; +async fn inner_main(cfg_path: Option<&str>) -> Result, Error> { + let rpc_ctx = RpcContext::init(cfg_path).await?; let mut shutdown_recv = rpc_ctx.shutdown.subscribe(); let sig_handler_ctx = rpc_ctx.clone(); @@ -256,41 +250,8 @@ fn main() { .long("config") .takes_value(true), ) - .arg( - clap::Arg::with_name("verbosity") - .short("v") - .multiple(true) - .takes_value(false), - ) - .arg( - clap::Arg::with_name("log-module") - .long("log-module") - .multiple(true) - .takes_value(true), - ) .get_matches(); - // initializes the bootstrap logger, this will be replaced with the EmbassyLogger later - let filter = match matches.occurrences_of("verbosity") { - 0 => LevelFilter::ERROR, - 1 => LevelFilter::WARN, - 2 => LevelFilter::INFO, - 3 => LevelFilter::DEBUG, - _ => LevelFilter::TRACE, - }; - let module_logging = matches - .values_of("log-module") - .into_iter() - .flatten() - .filter_map(|s| s.split_once("=")) - .map(|(m, l)| { - ( - m.to_owned(), - l.parse() - .expect(&format!("Invalid 'log-module' argument: {}", l)), - ) - }) - .collect::>(); let cfg_path = matches.value_of("config"); let res = { @@ -299,11 +260,11 @@ fn main() { .build() .expect("failed to initialize runtime"); rt.block_on(async { - match inner_main(cfg_path, filter, module_logging).await { + match inner_main(cfg_path).await { Ok(a) => Ok(a), Err(e) => { (|| async { - tracing::error!("{:?}", e.source); + tracing::error!("{}", e.source); tracing::debug!("{:?}", e.source); embassy::sound::BEETHOVEN.play().await?; #[cfg(feature = "avahi")] diff --git a/appmgr/src/context/rpc.rs b/appmgr/src/context/rpc.rs index 9f79ebe42..8a045671c 100644 --- a/appmgr/src/context/rpc.rs +++ b/appmgr/src/context/rpc.rs @@ -1,5 +1,5 @@ use std::borrow::Cow; -use std::collections::{BTreeMap, VecDeque}; +use std::collections::VecDeque; use std::net::{IpAddr, Ipv4Addr, SocketAddr, SocketAddrV4}; use std::ops::Deref; use std::path::{Path, PathBuf}; @@ -20,7 +20,6 @@ use tokio::fs::File; use tokio::sync::broadcast::Sender; use tokio::sync::RwLock; use tracing::instrument; -use tracing::metadata::LevelFilter; use crate::db::model::Database; use crate::hostname::{get_hostname, get_id}; @@ -134,20 +133,10 @@ pub struct RpcContextSeed { #[derive(Clone)] pub struct RpcContext(Arc); impl RpcContext { - pub async fn init>( - cfg_path: Option

, - log_level: LevelFilter, - module_logging: BTreeMap, - ) -> Result { + pub async fn init>(cfg_path: Option

) -> Result { let base = RpcContextConfig::load(cfg_path).await?; let log_epoch = Arc::new(AtomicU64::new(rand::random())); - let logger = EmbassyLogger::init( - log_level, - log_epoch.clone(), - base.log_server.clone(), - false, - module_logging, - ); + let logger = EmbassyLogger::init(log_epoch.clone(), base.log_server.clone(), false); let (shutdown, _) = tokio::sync::broadcast::channel(1); let secret_store = base.secret_store().await?; let db = base.db(&secret_store).await?; diff --git a/appmgr/src/error.rs b/appmgr/src/error.rs index 5af665251..b33102bce 100644 --- a/appmgr/src/error.rs +++ b/appmgr/src/error.rs @@ -218,8 +218,9 @@ impl From for Error { } impl From for RpcError { fn from(e: Error) -> Self { - let mut data_object = serde_json::Map::with_capacity(2); + let mut data_object = serde_json::Map::with_capacity(3); data_object.insert("details".to_owned(), format!("{}", e.source).into()); + data_object.insert("debug".to_owned(), format!("{:?}", e.source).into()); data_object.insert( "revision".to_owned(), match serde_json::to_value(&e.revision) { diff --git a/appmgr/src/util/logger.rs b/appmgr/src/util/logger.rs index 26f71abdd..bdc8a48e5 100644 --- a/appmgr/src/util/logger.rs +++ b/appmgr/src/util/logger.rs @@ -2,9 +2,14 @@ use std::collections::BTreeMap; use std::sync::atomic::{AtomicBool, AtomicU64, Ordering}; use std::sync::Arc; -use reqwest::Url; +use reqwest::{Client, Url}; use sequence_trie::SequenceTrie; +use serde::Serialize; +use tracing::Subscriber; use tracing_subscriber::filter::LevelFilter; +use tracing_subscriber::Layer; + +use crate::version::COMMIT_HASH; #[derive(Clone, Debug)] pub struct ModuleMap { @@ -81,48 +86,92 @@ impl ModuleMap { } } -#[derive(Clone)] -pub struct EmbassyLogger { - log_level: LevelFilter, +pub struct SharingLayer { + log_epoch: Arc, + sharing: Arc, + share_dest: String, +} +impl Layer for SharingLayer { + fn on_event( + &self, + event: &tracing::Event<'_>, + _ctx: tracing_subscriber::layer::Context<'_, S>, + ) { + if self.sharing.load(Ordering::SeqCst) { + #[derive(Serialize)] + #[serde(rename_all = "kebab-case")] + struct LogRequest<'a> { + log_epoch: u64, + commit_hash: &'static str, + file: Option<&'a str>, + line: Option, + target: &'a str, + level: &'static str, + message: Option, + } + if event.metadata().level() <= &tracing::Level::WARN { + let body = LogRequest { + log_epoch: self.log_epoch.load(Ordering::SeqCst), + commit_hash: COMMIT_HASH, + file: event.metadata().file(), + line: event.metadata().line(), + target: event.metadata().target(), + level: event.metadata().level().as_str(), + message: event + .fields() + .find(|f| f.name() == "message") + .map(|f| f.to_string()), + }; + // we don't care about the result and need it to be fast + tokio::spawn(Client::new().post(&self.share_dest).json(&body).send()); + } + } + } +} + +#[derive(Clone)] +pub struct EmbassyLogger { log_epoch: Arc, sharing: Arc, - share_dest: Url, - module_map: ModuleMap, } impl EmbassyLogger { - pub fn init( - log_level: LevelFilter, - log_epoch: Arc, - share_dest: Option, - share_errors: bool, - module_map: BTreeMap, - ) -> Self { - let share_dest = match share_dest { - None => Url::parse("https://beta-registry-0-3.start9labs.com/error-logs").unwrap(), // TODO - Some(a) => a, - }; + fn base_subscriber() -> impl Subscriber { use tracing_error::ErrorLayer; use tracing_subscriber::prelude::*; use tracing_subscriber::{fmt, EnvFilter}; - let fmt_layer = fmt::layer().with_target(false); - let filter_layer = EnvFilter::from_default_env().add_directive(log_level.into()); + let filter_layer = EnvFilter::from_default_env(); + let fmt_layer = fmt::layer().with_target(true); tracing_subscriber::registry() .with(filter_layer) .with(fmt_layer) .with(ErrorLayer::default()) - .init(); + } + pub fn no_sharing() { + use tracing_subscriber::prelude::*; + Self::base_subscriber().init(); color_eyre::install().expect("Color Eyre Init"); - let embassy_logger = EmbassyLogger { - log_level, - log_epoch, - sharing: Arc::new(AtomicBool::new(share_errors)), - share_dest: share_dest, - module_map: ModuleMap::new(module_map), + } + pub fn init(log_epoch: Arc, share_dest: Option, share_errors: bool) -> Self { + use tracing_subscriber::prelude::*; + + let share_dest = match share_dest { + None => "https://beta-registry-0-3.start9labs.com/error-logs".to_owned(), // TODO + Some(a) => a.to_string(), }; - embassy_logger + let sharing = Arc::new(AtomicBool::new(share_errors)); + let sharing_layer = SharingLayer { + log_epoch: log_epoch.clone(), + share_dest, + sharing: sharing.clone(), + }; + + Self::base_subscriber().with(sharing_layer).init(); + color_eyre::install().expect("Color Eyre Init"); + + EmbassyLogger { log_epoch, sharing } } pub fn set_sharing(&self, sharing: bool) { self.sharing.store(sharing, Ordering::SeqCst) diff --git a/appmgr/src/version/mod.rs b/appmgr/src/version/mod.rs index fe687b6e8..efa54d04c 100644 --- a/appmgr/src/version/mod.rs +++ b/appmgr/src/version/mod.rs @@ -175,10 +175,10 @@ pub async fn self_update(requirement: emver::VersionRange) -> Result<(), Error> todo!() } +pub const COMMIT_HASH: &'static str = + git_version::git_version!(args = ["--always", "--abbrev=40", "--dirty=-modified"]); + #[command(rename = "git-info", local, metadata(authenticated = false))] -pub fn git_info() -> Result { - Ok( - git_version::git_version!(args = ["--always", "--abbrev=40", "--dirty=-modified"]) - .to_owned(), - ) +pub fn git_info() -> Result<&'static str, Error> { + Ok(COMMIT_HASH) }