【问题标题】:syslog output for log4r examplelog4r 示例的 syslog 输出
【发布时间】:2008-10-14 15:17:49
【问题描述】:

有人可以发布一个为 log4r 使用 syslog 输出器的示例吗,我目前正在使用 stdout 但想登录到 syslog。

mylog = Logger.new 'mylog'
mylog.outputters = Outputter.stdout
mylog.info "Starting up."

拉吉


也感谢以下博文。

Angrez's blog: Log4r - Usage and Examples

ProgrammingStuff: Log4r

【问题讨论】:

    标签: ruby log4r


    【解决方案1】:

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

    出于某种原因,我需要明确要求 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."
    

    拉吉

    【讨论】:

    • 如果你找到了答案,回答你自己的问题绝对不是蹩脚的。
    • 我需要在require之后添加include Log4r或者使用Log4r::LoggerLog4r::Syslogoutputter
    【解决方案2】:

    我发现这很有帮助,但我必须进行进一步的编辑。有东西试图重新打开系统日志,导致未处理的 RuntimeError。我在environments/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."
    

    可能有一种更漂亮的方法,但这似乎适合我。

    【讨论】:

      猜你喜欢
      • 2013-06-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-27
      • 1970-01-01
      • 2019-10-14
      • 2023-03-30
      相关资源
      最近更新 更多