我已经编写了下面的webrick服务器。它成功写入了2个日志文件。
我想把r10kstatus命令的输出写到一个不同的日志文件中,但是我有点摸不着头脑。
#!/usr/bin/env ruby
require 'webrick'
server = WEBrick::HTTPServer.new(
:Port => ARGV.first,
:Logger => WEBrick::Log.new("webrick.log",WEBrick::Log::INFO),
:AccessLog => [[File.open("webrick_access.log",'w'),WEBrick::AccessLog::COMBINED_LOG_FORMAT]]
)
server.mount_proc '/' do |req, res|
r10kstatus = `sudo r10k deploy environment -pv 2>&1`
log_foo = WEBrick::Log.new("r10k_deploy.log",WEBrick::Log::DEBUG)
File.write(log_foo, r10kstatus)
end
trap 'INT' do
server.shutdown
end
server.starthttp://www.ruby-doc.org/stdlib-2.0/libdoc/webrick/rdoc/WEBrick/BasicLog.html#method-i-log
这3条线路不工作
r10kstatus = `sudo r10k deploy environment -pv 2>&1`
log_foo = WEBrick::Log.new("r10k_deploy.log",WEBrick::Log::DEBUG)
File.write(log_foo, r10kstatus)如何将r10kstatus的标准输出写入日志文件?
发布于 2014-09-19 02:11:19
我想通了。
公共类方法和公共实例方法是有区别的。
我必须创建一个对象,然后针对该对象调用调试实例方法
完整的解决方案:
#!/usr/bin/env ruby
require 'webrick'
server = WEBrick::HTTPServer.new(
:Port => ARGV.first,
:Logger => WEBrick::Log.new("r10k_gitlab_webhook.log",WEBrick::Log::INFO),
:AccessLog => [[File.open("r10k_gitlab_webhook.log",'w'),WEBrick::AccessLog::COMBINED_LOG_FORMAT]]
)
r10k_comman_log = WEBrick::Log.new('foo.log',WEBrick::Log::DEBUG)
r10k_comman_log.warn( 'hi' )
server.mount_proc '/' do |req, res|
r10kstatus = `whoami`
r10k_comman_log.debug( r10kstatus )
end
trap 'INT' do
server.shutdown
end
server.starthttps://stackoverflow.com/questions/25919311
复制相似问题