2022-10-13 twiq 実装メモ (23) tracing crate など
『競技プログラミングの鉄則』の 4 章までを読んだ。 LIS の長さ等。明日は 5 章。
twiq 実装メモ (23)
ログの追加。
- crate の選択
- https://github.com/rust-unofficial/awesome-rust#logging
- GitHub Stars: 713 All-Time DLs: 2,658,403 estk/log4rs
- GitHub Stars: 202 All-Time DLs: 5,230 jesusprubio/leg
- GitHub Stars: 79 All-Time DLs: 23,880 rbatis/fast_log
- GitHub Stars: 15xx All-Time DLs: 107,521,332 rust-lang/log
- GitHub Stars: 368 All-Time DLs: 2,065,839 seanmonstar/pretty-env-logger
- GitHub Stars: 13xx All-Time DLs: 8,186,438 slog-rs/slog — Structured, composable logging for Rust Build Status
- GitHub Stars: 3xxx All-Time DLs: 51,552,855 tokio-rs/tracing — An application level tracing framework for async-aware structured logging, error handling, metrics, and more Build Status
- awesome-rust にないけど env_logger は?
- GitHub Stars: 530 All-Time DLs: 61,371,114 [env-logger-rs/env_logger]
- 信頼の tokio-rs 。 tracing にしよう
- ログを出力する際の方針 (?) もほしい
- https://blog.mmmcorp.co.jp/blog/2018/05/25/web_application_logging/
- 参考になる
- 「ログレベル」で調べると良さそう
- https://stackoverflow.com/a/5817869
- 方針 (?) は悩みそうなので保留
リクエストログの追加。
- axum のミドルウェアにありそう
- よく使われるミドルウェア
- https://docs.rs/axum/0.5.16/axum/middleware/index.html#commonly-used-middleware
TraceLayer for high level tracing/logging.
- あった
- リンクが動かない
- どうも tower-http の範囲っぽいのでそちらを参照する
- https://docs.rs/tower-http/0.3.4/tower_http/trace/index.html
- feature flag のドキュメントが見当たらないので
Cargo.toml
を見る - https://github.com/tower-rs/tower-http/blob/tower-http-0.3.4/Cargo.toml
trace
で良さそうcargo add tower-http --feature trace -p web
- TraceLayer を追加できた
- ログレベルが DEBUG なのが気になる
他のミドルウェアも試す。
RequestIdLayer and PropagateRequestIdLayer set and propagate request ids.
- https://docs.rs/tower-http/0.3.4/tower_http/request_id/index.html
cargo add tower-http --feature request-id -p web
MakeRequestId
trait を実装すれば良さそうだけど標準でMakeRequestUuid
というのがあるので使ってみる- リクエストヘッダーに
x-request-id
が追加された - これも保留かな
ログレベルの変更。
- TraceLayer の Level を INFO に変更した
- https://docs.rs/tower-http/0.3.4/tower_http/trace/index.html#customization
- ドキュメントにあった
- ついでにヘッダーも含めた
- request id がほしくなってきた……
- ひとまず今日はここまで
今日のコミット。