有人可以發佈使用syslog輸出爲log4r的示例,我目前使用stdout但希望登錄到syslog。syslog輸出爲log4r示例
mylog = Logger.new 'mylog'
mylog.outputters = Outputter.stdout
mylog.info "Starting up."
拉吉
還要感謝以下博客文章。
Angrez's blog: Log4r - Usage and Examples
有人可以發佈使用syslog輸出爲log4r的示例,我目前使用stdout但希望登錄到syslog。syslog輸出爲log4r示例
mylog = Logger.new 'mylog'
mylog.outputters = Outputter.stdout
mylog.info "Starting up."
拉吉
還要感謝以下博客文章。
Angrez's blog: Log4r - Usage and Examples
跛腳的一種回答我的問題,但我發現答案,這和增加供以後搜索。
由於某種原因,我需要明確要求log4r/outputter/syslogoutputter其他方式SyslogOutputter會導致「未初始化的常量SyslogOutputter(NameError)」錯誤。其他輸出者似乎沒有這個問題。
require 'rubygems'
require 'log4r'
require 'log4r/outputter/syslogoutputter'
mylog = Logger.new 'mylog'
mylog.outputters = SyslogOutputter.new("f1", :ident => "myscript")
mylog.info "Starting up."
拉吉
我發現這非常有幫助,但我不得不做出進一步修改。某些東西試圖重新打開系統日誌,導致未處理的RuntimeError。我用這把斧頭瘋狂覆蓋固定它的環境/ production.rb:
require 'rubygems'
require 'log4r'
require 'log4r/outputter/syslogoutputter'
# The outputter needs some love to avoid attempts to reopen syslog. Most of this is cargo-culted from source.
class Log4r::SyslogOutputter
def initialize(_name, hash={})
super(_name, hash)
ident = (hash[:ident] or hash['ident'] or _name)
logopt = (hash[:logopt] or hash['logopt'] or LOG_PID | LOG_CONS).to_i
facility = (hash[:facility] or hash['facility'] or LOG_USER).to_i
if Syslog.opened? then
@syslog = Syslog
else
@syslog = Syslog.open(ident, logopt, facility)
end
end
end
RAILS_DEFAULT_LOGGER = Log4r::Logger.new 'mylog'
config.logger = RAILS_DEFAULT_LOGGER
config.logger.outputters = Log4r::SyslogOutputter.new("f1", :ident=>"RoR")
config.logger.info "Starting up."
有可能做的更漂亮的方式,但是這似乎爲我做的。
如果你找到答案,回答你自己的問題絕對不是跛腳。 – silvamerica 2011-04-25 18:37:33