首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >log4r示例的syslog输出

log4r示例的syslog输出
EN

Stack Overflow用户
提问于 2008-10-14 15:17:49
回答 2查看 3.7K关注 0票数 3

某个人可以发布一个log4r使用syslog输出程序的例子吗?我目前正在使用stdout,但是想要登录到syslog。

代码语言:javascript
复制
mylog = Logger.new 'mylog'
mylog.outputters = Outputter.stdout
mylog.info "Starting up."

拉杰

也要感谢下面的博客文章。

Angrez的博客: Log4r -用法和示例

ProgrammingStuff: Log4r

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2008-10-15 06:16:26

回答我自己的问题有点蹩脚,但我找到了答案,并将其添加到以后的搜索中。

由于某些原因,我需要显式地要求log4r/outputter/syAdd.1-outputter,其他明智的SyslogOutputter会导致“未初始化的常量SyslogOutputter (NameError)”错误。其他的输出者似乎没有这个问题。

代码语言:javascript
复制
require 'rubygems'
require 'log4r'
require 'log4r/outputter/syslogoutputter'
mylog = Logger.new 'mylog'
mylog.outputters = SyslogOutputter.new("f1", :ident => "myscript")
mylog.info "Starting up."

拉杰

票数 9
EN

Stack Overflow用户

发布于 2009-05-20 09:37:03

我发现这很有帮助,但我不得不做进一步的编辑。有东西试图重新打开syslog,导致一个未处理的RuntimeError。我在环境/Production.rb中用这个斧头疯狂地重写了它:

代码语言:javascript
复制
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."

也许有一种更漂亮的方法,但这似乎是为了我。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/201615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档