環境

  • 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であることに、疑問を持ちました。