環境
- Python 3.7.3
- logging v0.5.1.2
質問
Pythonのドキュメントには、logging.StreamHandler
クラスの説明が以下の通り記載されています。
StreamHandler クラスの新たなインスタンスを返します。 stream が指定された場合、インスタンスはログ出力先として指定されたストリームを使います; そうでない場合、 sys.stderr が使われます。
https://docs.python.org/ja/3/library/logging.handlers.html#logging.StreamHandler
なぜデフォルトのstreamがstdoutでなくstderrなのでしょうか?
ログ情報は「エラー」ではないので、stdoutの方が自然のように思います。
疑問に思った経緯
私はもともと、Pythonより前にJavaを使っていました。
JavaのLogbackのConsoleAppender
では、デフォルトのstreamはSystem.out
です。
ConsoleAppenderは名前のとおり、ロギングイベントをコンソールに出力します。正確に言うと、System.outあるいはSystem.errに出力します。デフォルトではSystem.outが使われます。
https://logback.qos.ch/manual/appenders_ja.html#ConsoleAppender
デフォルトがstdoutであることが一般的だと思っていたので、Pythonのloggingのデフォルトストリームがstderrであることに、疑問を持ちました。