Perl では $SIG{__WARN__} という疑似シグナルハンドラを使って、warn() で出力されようとする内容をトラップして処理することができます。 package MyWorker; my $logger = Fluent::Logger->new; sub work { my $job = shift; local $SIG{__WARN__} = sub { my $msg = shift; # warn() で出力される文字列が渡ってくるので logger で送る $logger->post( "job" => { jobid => $job->jobid, # jobid で検索できるように message => $msg, }, ); }; # job の処理 # warn("Error!") } 最初からログを何らかのオブジェクトに渡す仕組みを入れて作っていればよか