mirror of
https://github.com/TheFunny/TelegramTwitterMediaBot.git
synced 2026-10-08 01:42:05 +00:00
feat(log): survive a bare deployment and name what each line is about
P0 (foundation) + P1 (diagnostic depth) of the logging plan: - main.rs initializes the timed builder with a default filter of `info,hyper_util=warn,reqwest=warn`. Without RUST_LOG nothing was logged at all (env_logger falls back to `error`), so `docker run --env-file .env` was silent, and the plain `init` had no timestamps. - info-and-above lines stop printing user URLs (fetch/send failures, inline fetch, bsky's remux warnings). The full URL, the message text and the inline query move to `trace`, so a `debug` log can be handed to someone else. - Lifecycle lines name the chat and the post: sent/failed/queued plus the total `ms`, the edit prompt, the channel forward, and every queue line (`chat=` + `[key=…]` + per-attempt `ms`, dead-letters included). - Queue work is visible: `x-media`'s fetch line carries its duration (ugoira encode and HLS remux included), and the 300s sweep reports the pending count and how overdue the oldest task is — only when the queue is non-empty. - URL workers are supervised like the queue workers: a panicking worker used to die silently and shrink the pool for the rest of the process. - Degradations that still serve the user (cache/state write or read failures, a failed chat action) are `warn`, not `error`. Verified against the scripted fake-API harness: unset RUST_LOG logs info with timestamps, `debug` carries no user URL, `trace` does, a cache-hit send logs `chat=111 in 5ms`, a failing send queues and dead-letters with chat+key, and the sweep reports the pending retry.
This commit is contained in:
@@ -116,11 +116,10 @@ pub async fn inline_query_handler(bot: Bot, query: InlineQuery) -> Result<(), Re
|
||||
/// Fetches the post behind an inline query and answers it. The caller has
|
||||
/// already applied the debounce. Returns `true` when an answer was sent.
|
||||
async fn answer_inline_query(bot: Bot, query: InlineQuery) -> Result<bool, RequestError> {
|
||||
log::debug!(
|
||||
"inline query: {} [key={}]",
|
||||
query.query,
|
||||
log_key(&query.query)
|
||||
);
|
||||
// The query is user input: `debug` keeps only its normalized key, the
|
||||
// text itself is `trace` (same split as the message handler).
|
||||
log::debug!("inline query [key={}]", log_key(&query.query));
|
||||
log::trace!("inline query: {}", query.query);
|
||||
// No retries: the debounce plus a 1s/2s backoff would outlast the inline
|
||||
// query the answer belongs to.
|
||||
match x_media::site::fetch_once(&query.query).await {
|
||||
@@ -206,7 +205,7 @@ async fn answer_inline_query(bot: Bot, query: InlineQuery) -> Result<bool, Reque
|
||||
}
|
||||
}
|
||||
Ok(None) => {}
|
||||
Err(e) => log::error!("inline fetch {}: {e}", query.query),
|
||||
Err(e) => log::error!("inline fetch [key={}]: {e}", log_key(&query.query)),
|
||||
}
|
||||
Ok(false)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user