add tracing; one time lang call

This commit is contained in:
2025-08-13 08:55:22 +02:00
parent 67d861325a
commit e991818c7d
4 changed files with 144 additions and 19 deletions

130
Cargo.lock generated
View File

@@ -661,8 +661,8 @@ dependencies = [
"aho-corasick", "aho-corasick",
"bstr", "bstr",
"log", "log",
"regex-automata", "regex-automata 0.4.9",
"regex-syntax", "regex-syntax 0.8.5",
] ]
[[package]] [[package]]
@@ -963,7 +963,7 @@ dependencies = [
"globset", "globset",
"log", "log",
"memchr", "memchr",
"regex-automata", "regex-automata 0.4.9",
"same-file", "same-file",
"walkdir", "walkdir",
"winapi-util", "winapi-util",
@@ -1070,6 +1070,15 @@ version = "0.4.27"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94"
[[package]]
name = "matchers"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558"
dependencies = [
"regex-automata 0.1.10",
]
[[package]] [[package]]
name = "matchit" name = "matchit"
version = "0.8.4" version = "0.8.4"
@@ -1161,6 +1170,16 @@ dependencies = [
"windows-sys 0.59.0", "windows-sys 0.59.0",
] ]
[[package]]
name = "nu-ansi-term"
version = "0.46.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84"
dependencies = [
"overload",
"winapi",
]
[[package]] [[package]]
name = "num-bigint-dig" name = "num-bigint-dig"
version = "0.8.4" version = "0.8.4"
@@ -1229,6 +1248,12 @@ version = "1.21.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
[[package]]
name = "overload"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
[[package]] [[package]]
name = "parking" name = "parking"
version = "2.2.1" version = "2.2.1"
@@ -1419,8 +1444,17 @@ checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
dependencies = [ dependencies = [
"aho-corasick", "aho-corasick",
"memchr", "memchr",
"regex-automata", "regex-automata 0.4.9",
"regex-syntax", "regex-syntax 0.8.5",
]
[[package]]
name = "regex-automata"
version = "0.1.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132"
dependencies = [
"regex-syntax 0.6.29",
] ]
[[package]] [[package]]
@@ -1431,9 +1465,15 @@ checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
dependencies = [ dependencies = [
"aho-corasick", "aho-corasick",
"memchr", "memchr",
"regex-syntax", "regex-syntax 0.8.5",
] ]
[[package]]
name = "regex-syntax"
version = "0.6.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
[[package]] [[package]]
name = "regex-syntax" name = "regex-syntax"
version = "0.8.5" version = "0.8.5"
@@ -1693,6 +1733,15 @@ dependencies = [
"digest", "digest",
] ]
[[package]]
name = "sharded-slab"
version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6"
dependencies = [
"lazy_static",
]
[[package]] [[package]]
name = "shlex" name = "shlex"
version = "1.3.0" version = "1.3.0"
@@ -2024,6 +2073,15 @@ dependencies = [
"syn", "syn",
] ]
[[package]]
name = "thread_local"
version = "1.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185"
dependencies = [
"cfg-if",
]
[[package]] [[package]]
name = "time" name = "time"
version = "0.3.41" version = "0.3.41"
@@ -2325,6 +2383,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678"
dependencies = [ dependencies = [
"once_cell", "once_cell",
"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.19"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008"
dependencies = [
"matchers",
"nu-ansi-term",
"once_cell",
"regex",
"sharded-slab",
"smallvec",
"thread_local",
"tracing",
"tracing-core",
"tracing-log",
] ]
[[package]] [[package]]
@@ -2418,6 +2506,12 @@ dependencies = [
"wasm-bindgen", "wasm-bindgen",
] ]
[[package]]
name = "valuable"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65"
[[package]] [[package]]
name = "vcpkg" name = "vcpkg"
version = "0.2.15" version = "0.2.15"
@@ -2552,6 +2646,8 @@ dependencies = [
"tokio", "tokio",
"tower-http", "tower-http",
"tower-sessions", "tower-sessions",
"tracing",
"tracing-subscriber",
"uuid", "uuid",
] ]
@@ -2565,6 +2661,22 @@ dependencies = [
"wasite", "wasite",
] ]
[[package]]
name = "winapi"
version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419"
dependencies = [
"winapi-i686-pc-windows-gnu",
"winapi-x86_64-pc-windows-gnu",
]
[[package]]
name = "winapi-i686-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6"
[[package]] [[package]]
name = "winapi-util" name = "winapi-util"
version = "0.1.9" version = "0.1.9"
@@ -2574,6 +2686,12 @@ dependencies = [
"windows-sys 0.59.0", "windows-sys 0.59.0",
] ]
[[package]]
name = "winapi-x86_64-pc-windows-gnu"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]] [[package]]
name = "windows-core" name = "windows-core"
version = "0.61.2" version = "0.61.2"

View File

@@ -15,4 +15,6 @@ sqlx = { version = "0.8", features = ["runtime-tokio-rustls", "sqlite", "macros"
tokio = { version = "1", features = ["macros", "rt-multi-thread"] } tokio = { version = "1", features = ["macros", "rt-multi-thread"] }
tower-http = { version = "0.6", features = ["fs"] } tower-http = { version = "0.6", features = ["fs"] }
tower-sessions = "0.14" tower-sessions = "0.14"
tracing = "0.1.41"
tracing-subscriber = { version = "0.3.19", features = ["env-filter"] }
uuid = { version = "1.17", features = ["v4", "serde"] } uuid = { version = "1.17", features = ["v4", "serde"] }

View File

@@ -19,18 +19,18 @@ async fn index(
messages: Messages, messages: Messages,
headers: HeaderMap, headers: HeaderMap,
) -> Response { ) -> Response {
let lang = language(&cookies, &headers); tracing::info!("in /index");
rust_i18n::set_locale(lang.to_locale());
let (cookies, req) = backend.client_full(cookies, &headers).await; let (cookies, req) = backend.client_full(cookies, &headers).await;
tracing::info!("cookies = {cookies:#?}");
tracing::info!("req = {req:#?}");
let client = req.client; let client = req.client;
rust_i18n::set_locale(&req.lang.to_string());
let sightings = backend.sightings_for_client(&client).await; let sightings = backend.sightings_for_client(&client).await;
let amount_total_cameras = backend.amount_total_cameras().await; let amount_total_cameras = backend.amount_total_cameras().await;
let highscore = backend.highscore().await; let highscore = backend.highscore().await;
let lang = language(&cookies, &headers); let mut page = Page::new(req.lang);
let mut page = Page::new(lang);
page.messages(messages); page.messages(messages);
let markup = page.content(html! { let markup = page.content(html! {
hgroup { hgroup {
@@ -101,10 +101,9 @@ async fn game(
messages: Messages, messages: Messages,
Path(uuid): Path<String>, Path(uuid): Path<String>,
) -> Result<Redirect, Response> { ) -> Result<Redirect, Response> {
let lang = language(&cookies, &headers); let (cookies, req) = backend.client_full(cookies, &headers).await;
rust_i18n::set_locale(lang.to_locale()); let client = req.client;
rust_i18n::set_locale(req.lang.to_locale());
let (cookies, client) = backend.client(cookies).await;
let Ok(uuid) = Uuid::parse_str(&uuid) else { let Ok(uuid) = Uuid::parse_str(&uuid) else {
return Err(not_found(cookies, headers).await.into_response()); return Err(not_found(cookies, headers).await.into_response());
@@ -147,10 +146,9 @@ async fn set_name(
headers: HeaderMap, headers: HeaderMap,
Form(form): Form<NameForm>, Form(form): Form<NameForm>,
) -> Response { ) -> Response {
let lang = language(&cookies, &headers); let (cookies, req) = backend.client_full(cookies, &headers).await;
rust_i18n::set_locale(lang.to_locale()); let client = req.client;
rust_i18n::set_locale(req.lang.to_locale());
let (cookies, client) = backend.client(cookies).await;
match backend.set_client_name(&client, &form.name).await { match backend.set_client_name(&client, &form.name).await {
Ok(()) => messages.info("set-name-succ"), Ok(()) => messages.info("set-name-succ"),

View File

@@ -11,6 +11,7 @@ use std::{
}; };
use tower_http::services::ServeDir; use tower_http::services::ServeDir;
use tower_sessions::{MemoryStore, SessionManagerLayer}; use tower_sessions::{MemoryStore, SessionManagerLayer};
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt, EnvFilter};
use uuid::Uuid; use uuid::Uuid;
#[macro_use] #[macro_use]
@@ -70,6 +71,7 @@ impl From<String> for Language {
} }
} }
#[derive(Debug)]
struct Req { struct Req {
client: Client, client: Client,
lang: Language, lang: Language,
@@ -192,6 +194,11 @@ impl Backend {
#[tokio::main] #[tokio::main]
async fn main() { async fn main() {
tracing_subscriber::registry()
.with(tracing_subscriber::fmt::layer())
.with(EnvFilter::from_default_env())
.init();
let session_store = MemoryStore::default(); let session_store = MemoryStore::default();
let session_layer = SessionManagerLayer::new(session_store).with_secure(false); let session_layer = SessionManagerLayer::new(session_store).with_secure(false);