我正在尝试将STDERR重定向到作为守护程序运行的jruby程序的文件。之前我在MRI中都做到了这一点,但似乎在jruby中缺少一些困惑。
log = File.new('/home/my_user/test_log.log', "w")
$stderr.reopen log
$stderr.puts "writing to log!"
require 'some_broken_thing'
MRI(2.0.0-p0)中的日志内容:
/path/to/ruby/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require': cannot load such file -- some_broken_thing (LoadError)
from /path/to/ruby/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require'
from test.rb:5:in `<main>'
writing to log!
在jruby(1.7.4)中记录日志内容:
writing to log!
我只是想确保将诸如破碎的需求或未满足的依赖之类的愚蠢的事情记录到某处,而不是被触发到控制台。不知道我在做什么错。当我调用$ stderr.reopen时,已损坏的require的错误输出未在控制台中显示,这很好,但是从不显示在文件中,效果不是很好。
忘了把它关掉。正如inger所指出的,此问题已在http://github.com/jruby/jruby/issues/1082中修复
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句