rust の log 周りメモ
rust のコードを読んでいると env_logger::init() とかやってるのをよく目にするんだけど、このあたりの何がどうなってるのか分かってなかったので、軽く調べたメモ。
logcratelog 記録用の API を提供
info!とかdebug!とかの macro
渡されたログメッセージをどうするか (画面に表示するかどうかとか) は、この crate の対象範囲外。
(後述する logger の設定が何もされていない状態だと、メッセージは無視されるっぽい。)
ライブラリ系の crate はこの
logcrate のみに依存しておく。
logger 系の crate たち
logcrate で記録されたログメッセージをどうすんのか、というのを担当画面 (標準エラー) に表示するとか、 syslog に転送するとか。
実行ファイル (
main()) の頭に初期化処理を書いておく。色々ある
ついでに
env_loggerについて標準エラーにログを出力する、シンプルな logger
名前のとおり、環境変数を使って設定を変更できる
ログレベルの変更やら、対象のモジュール名の指定やら。
env_logger::init()だけやっとけばいいお手軽さが売りなのかな?環境変数でアレコレ設定するので、それ用のコードをわざわざ書く必要がない。
例えば、コマンドライン引数をパースしてログレベルを受け取ったのを logger に引き渡すとか、そういうコードが不要。
とりあえず入れとけば、あとは print デバッグみたいな感覚で log を使えるようになるし。