ActixWebは良いね。
でも、リクエストをハンドリングしている際にエラーが発生すると、ログには出力されず400応答となる。
例えば、JSONパースに失敗した時など。
これだと、何が原因でエラーしたか全く分からない。
エラーが発生した原因は出力してほしい。
特に開発中は絶対必要なので、400応答時のエラー内容の確認方法の書き溜め。
先に結論
RUST_LOGの環境変数を「debug」にして起動させる。
簡単。
1 2 3 4 5 |
#[actix_web::main] async fn main() -> std::io::Result<()> { std::env::set_var("RUST_LOG", "info"); // <- これ } |
補足
そこそこ調べたら、公式サイトに書いてあったというおち。
Actix はすべてのエラーを WARN ログレベルで記録します。アプリケーションのログレベルがDEBUGに設定されていて、RUST_BACKTRACEが有効になっている場合は、バックトレースも記録されます。これらは環境変数で設定できます。
環境変数を指定して起動したらエラー内容が出力された。
1 |
Error in response: Deserialize(Error("expected `,` or `}`", line: 6, column: 5)) |
Railsとかは当たり前のようにstack trace出力するから意外と困る人多そうな気もする。
詳細は、公式みてね。
じゃあね〜〜〜。