首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用Axum/Tokio记录和过滤请求?

如何用Axum/Tokio记录和过滤请求?
EN

Stack Overflow用户
提问于 2022-11-03 11:09:12
回答 1查看 202关注 0票数 2

我将Axum用于一个相对简单的Web,并希望为传入请求获得一个日志/跟踪输出,类似于Go Gin、IIS日志、Python等--一个简单的路径和参数输出。

HTTP层被添加到路由器中:

代码语言:javascript
复制
let app = Router::new()
    .route("/hello", get(hello_img))
    .layer(TraceLayer::new_for_http());

这大致导致了我想要的结果:

然而,还有很多额外的不想要的日志记录正在进行,所以我添加了一个过滤器来调优这些日志。在添加过滤器之后:

代码语言:javascript
复制
let filter = filter::Targets::new()
    .with_target("tower_http::trace::on_response", Level::TRACE)
    .with_target("tower_http::trace::on_request", Level::TRACE)
    .with_default(Level::INFO);

并将其添加到订阅服务器:

代码语言:javascript
复制
let tracing_layer = tracing_subscriber::fmt::layer();

tracing_subscriber::registry()
    .with(tracing_layer)
    .with(filter)
    .init();

输出更改为

细节(方法、URI、参数)消失了。

为什么即使没有指定格式更改,也会发生这种情况?如何将请求/响应跟踪保存在控制台中,但过滤掉其他不必要的跟踪?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-03 16:01:42

您的过滤器当前过滤make_span。将此添加到您的目标:

代码语言:javascript
复制
.with_target("tower_http::trace::make_span", Level::DEBUG)

编辑:Level::DEBUG对你的目标来说应该足够了

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74302133

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档