stdout とは何か? 標準出力ストリーム
stdout (標準出力) は、プログラムが通常の結果を write するデフォルトのストリームで、通常は端末、または CI では job ログです。
コマンドが結果を出力するとき、通常はそれを stdout に write します。このストリームは、端末で目にするものであり、CI ログに現れるものです。通常の出力を stdout に保ち、stderr のエラーと分離しておくことが、プログラムの出力をクリーンに pipe し、キャプチャし、フィルタリングできるようにします。
stdout とは
stdout は file descriptor 1 で、プログラムの通常の出力のためのチャネルです。echo、printf、そしてほとんどのツールは、デフォルトで結果をここに送ります。
stdout をリダイレクトする
> (上書き) または >> (追記) で stdout をファイルに送れます。たとえば node build.js > build.log は、通常の出力を端末ではなくファイルにキャプチャします。
stderr と分離する理由
- stdout は結果を運び、stderr は診断とエラーを運ぶ。
- エラーがデータを汚すことなく、stdout を別のツールに pipe できる。
- CI はストリームに基づいてログを色付けしたり折りたたんだりできる。
stdout を pipe する
pipe は、あるプログラムの stdout を次のプログラムの stdin に接続します。ls | wc -l。クリーンなデータを stdout に保つことが、pipeline を組み合わせ可能にします。
CI における stdout
CI は stdout を job ログにキャプチャするので、出力するものはすべて build 記録の一部になります。機械可読な結果を stdout に出力するツールは、後段の step で解析でき、これがレポートが pipeline を流れる仕組みです。
managed runner でのログ
Latchkey は stdout をライブの job ログにストリーミングするので、build を実行中に見守ることができます。明確で構造化された stdout を write することで、失敗した実行のデバッグがはるかに速くなります。
重要なポイント
- stdout はデフォルトの出力ストリームで、file descriptor 1 です。
- 通常の結果は stdout に行きます。リダイレクトや pipe が可能です。
- CI は stdout を job ログとしてキャプチャするので、主要なデバッグ記録になります。