log4r उदाहरण के लिए syslog आउटपुट

क्या कोई लॉग 4r के लिए syslog outputter का उपयोग करने का एक उदाहरण पोस्ट कर सकता है, मैं वर्तमान में stdout का उपयोग कर रहा हूं लेकिन syslog पर लॉग ऑन करना चाहता हूं।

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

राज


निम्नलिखित ब्लॉग पोस्ट के लिए भी धन्यवाद।

Angrez का ब्लॉग: Log4r - उपयोग और उदाहरण

प्रोग्रामिंगस्टफ: लॉग 4r

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, स्रोत
मुझे आवश्यकता के बाद लॉग 4r :: लॉगर और log4r :: Syslogoutputter के बाद लॉग 4r जोड़ने की आवश्यकता है।
जोड़ा लेखक xorpaul, स्रोत

मैंने यह बहुत उपयोगी पाया, लेकिन मुझे और संपादन करना पड़ा। कुछ ने syslog को फिर से खोलने की कोशिश की, जिससे एक अनचाहे रनटाइम त्रुटि हुई। मैंने वातावरण/उत्पादन.आरबी में इस कुल्हाड़ी पागल ओवरराइड के साथ इसे ठीक किया:

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
जोड़ा