构建Rust应用的日志、监控与部署体系
1. 日志与监控基础
在开发过程中, insert_subscriber 负责处理数据库逻辑,且与周围的Web框架解耦,不会将 web::Form 或 web::Data 包装器作为输入类型。而 subscribe 则负责协调工作,调用所需的例程,并根据HTTP协议的规则和约定将结果转换为适当的响应。
这里不得不提 tracing::instrument ,它极大地降低了代码插桩的难度,让正确的做法变得简单易行。
2. 请求ID的处理
我们的最后一项任务是确保特定请求的所有日志,特别是包含返回状态码的记录,都添加 request_id 属性。为了避免修改 actix_web::Logger ,最简单的解决方案是添加一个新的中间件 RequestIdMiddleware ,它负责以下工作:
- 生成唯一的请求标识符。
- 创建一个新的跨度(span),并将请求标识符作为上下文附加到该跨度上。
- 将其余的中间件链包装在新创建的跨度中。
不过,使用 actix_web::Logger 会有一些问题,它无法以我们从其他日志中获取的结构化JSON格式提供丰富的信息(如状态码、处理时间、调用者IP等),我们需要从其消息字符串中解析这些信息。因此,我们引入了 tracing-actix-web
超级会员免费看
订阅专栏 解锁全文
966

被折叠的 条评论
为什么被折叠?



