ieșire syslog pentru exemplu log4r

Poate cineva post un exemplu de folosire a syslog outputter pentru log4r, eu sunt în prezent folosind stdout, dar doriți să vă conectați la syslog.

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

raj


Vă mulțumim și pentru următoarele postări de pe blog

Blogul Angrez: Log4r - Utilizare și exemple

Programare: Log4r

3

2 răspunsuri

Un fel de lame care răspunde la propria mea întrebare, dar am găsit răspunsul la aceasta și adăugându-l pentru căutări ulterioare.

Din anumite motive, trebuie să solicit log4r/outputter/syslogoutputter altfel în mod inteligent SyslogOutputter ar provoca "eroare constantă neinitializată SyslogOutputter (NameError)". Alte produse de producție nu par să aibă această problemă.

require 'rubygems'
require 'log4r'
require 'log4r/outputter/syslogoutputter'
mylog = Logger.new 'mylog'
mylog.outputters = SyslogOutputter.new("f1", :ident => "myscript")
mylog.info "Starting up."

raj

9
adăugat
Cu siguranta nu e lada sa raspunzi la intrebarea ta daca gasesti raspunsul.
adăugat autor silvamerica, sursa
A fost nevoie să adăugați include Log4r după ce cereți sau utilizați Log4r :: Logger și Log4r :: Syslogoutputter
adăugat autor xorpaul, sursa

Am găsit acest lucru foarte util, dar a trebuit să fac modificări suplimentare. Ceva a încercat să redeschidă syslog-ul, provocând o RuntimeError neafectată. Am fixat-o cu această suprascriere ax-nebun în medii/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."

Există probabil un mod mult mai frumos de a face acest lucru, dar asta mi se pare că mi-a făcut-o.

1
adăugat