Rubyで標準出力を標準的に出しつつログを取る方法
要件は以下
- 標準出力を通常通り出力する
- 標準出力もLoggerでログファイルに出力されるようにする
- Loggerによる出力もログファイルに出力されるようにする
https://github.com/m4i/teeを使うことでできるっぽいのでやってみた
require "tee"
require "logger"
tee = Tee.open("build.log")
$stdout = tee
logger = Logger.new(tee)
logger.info "hoge"
logger.debug "fuga"
puts "foobar"
という感じで実行してbuild.logを見てみると
I, [2025-06-18T16:57:34.895112 #6226] INFO -- : hoge
D, [2025-06-18T16:57:34.895252 #6226] DEBUG -- : fuga
foobar
という普通にputsで出力された標準出力もログファイルに出力されている
とまあそういうのができないもんかねといろいろ見てたらこれ使うことでできるっぽそうなので(ry