2014-09-18 96 views
0

我已經編寫了以下webrick服務器。它成功地寫入2個日誌文件。使用WEBrick日誌寫入文件

我想寫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.start 

http://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日誌文件的標準輸出?

回答

1

想通了。

公共類方法和公共實例方法之間存在差異。

我不得不創建一個對象,然後調用調試實例方法針對對象

完整的解決方案:

#!/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.start