我正在尝试将stderr
and存储stdout
在我们的数据库中,以便我们的后台进程将来进行调试。我还希望捕获像代理一样透明,我的意思是我希望仍然拥有stderr
和stdout
输出到常规记录器以及我们的数据库之一。
我有这样的代码:
class Message
include Mongoid::Document
field :stdout
field :stderr
def enable_capture_output
@previous_stderr, $stderr = $stderr, StringIO.new
@previous_stdout, $stdout = $stdout, StringIO.new
end
def disable_and_save_captured_output
self.stdout = $stdout.string
self.stderr = $stderr.string
$stderr = @previous_stderr
$stdout = @previous_stdout
end
end
但它的效果并不好。:(
使用:带有 DelayedJob 的 Rails 3.2.11 和 Mongoid 3.0.23