syslog الناتج عن مثال log4r

يمكن لبعض واحد نشر مثال على استخدام المخرج سجل ل log4r ، وأنا حاليا باستخدام stdout ولكن تريد تسجيل الدخول إلى syslog.

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

حاكم الهند


نشكرك أيضًا على مشاركات المدونة التالية.

مدونة أنغريز: Log4r - الاستخدام والأمثلة

ProgrammingStuff: Log4r

3

2 إجابة

نوع من الأعرج الإجابة على سؤالي ، ولكن وجدت الإجابة على هذا وإضافته لعمليات البحث في وقت لاحق.

لسبب ما أحتاج إلى تتطلب 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."

حاكم الهند

9
وأضاف
من المؤكد أنها ليست أعرج للإجابة على سؤالك الخاص إذا وجدت الإجابة.
وأضاف المؤلف silvamerica, مصدر
كنت بحاجة إلى إضافة include Log4r بعد طلب أو استخدام Log4r :: Logger و Log4r :: Syslogoutputter
وأضاف المؤلف xorpaul, مصدر

لقد وجدت هذا مفيدًا جدًا ، ولكن كان عليّ إجراء مزيد من التعديلات. هناك شيء ما حاول إعادة فتح syslog ، مما تسبب في حدوث خطأ غير مرتب 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."

ربما يكون هناك طريقة أجمل بكثير للقيام بذلك ، ولكن هذا يبدو أنه يفعل ذلك من أجلي.

1
وأضاف