在本站中
本站是开源的,仓库在 yuxuetr/rustineverything。这一部分的链接都指向提交 89a61b1(2026-10-23),行号以它为准。那个提交的 Cargo.lock 锁的是 tracing 0.1.44、tracing-core 0.1.36、tracing-attributes 0.1.31、tracing-subscriber 0.3.23、tracing-log 0.2.0,和本卷一致;dioxus 全家是 0.7.9。本站的服务端用 tracing 的方式很朴素:各 crate 里直接写 tracing::info! 之类的宏,三个函数挂了 #[instrument],main.rs 里有一段初始化 subscriber 的代码。这一部分逐一核对它们在生产里实际是什么样子。
- subscriber 的初始化:dioxus-server 0.7.9 的
serve_router在调用本站回调之前就执行了dioxus_logger::initialize_default(),本站的try_init总是返回SetGlobalDefaultError。生效的过滤器是from_env_lossy加hyper_util=warn,不装LogTracer;两份配置在各种RUST_LOG下的差别,dx serve和生产的格式差别,以及两种可能的改法。 - 本站的 #[instrument]:OAuth 回调、发评论、搜索三处的
skip、带表达式的fields、err;cfg_attr加#[post]时 span 包住的范围;搜索的hits先占位再record,但成功路径没有事件,生产配置下从不出现。 - 日志行:133 处宏调用的字段写法统计和代表例子;一行真实的生产
WARN怎样由fmt的Full格式和三层Display拼出来;RUST_LOG、docker json-file 轮转,以及日志里的 ANSI 颜色码。
flowchart TB serve["dioxus::serve"] --> logger["dioxus-logger 装 subscriber"] serve --> cb["本站回调"] cb --> tryinit["try_init 失败"] cb --> code["各模块代码"] code --> inst["三处 instrument"] code --> macros["133 处宏调用"] inst --> logger macros --> logger logger --> stdout["stdout"] stdout --> docker["docker json-file"]
💬 关联讨论
发起讨论加载中...