Question

Quelqu'un peut-il poster un exemple d'utilisation de syslog outputter pour log4r, j'utilise actuellement stdout mais je souhaite me connecter à syslog.

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

raj

Merci également aux articles de blog suivants.

Le blog d'Angrez: Log4r - Usage et exemples

ProgrammingStuff: Log4r

Était-ce utile?

La solution

C'est un peu nul en répondant à ma propre question, mais j'ai trouvé la réponse et en l'ajoutant pour des recherches ultérieures.

Pour une raison quelconque, j'ai besoin de demander explicitement à log4r / outputter / syslogoutputter que SyslogOutputter provoque "la constante non initialisée SyslogOutputter (NameError)". Erreur. Les autres producteurs ne semblent pas avoir ce problème.

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

raj

Autres conseils

J'ai trouvé cela très utile, mais je devais apporter d'autres modifications. Quelque chose a essayé de rouvrir le journal système, provoquant une erreur RuntimeError non gérée. Je l'ai corrigé avec cette dérogation ultra-folle dans les environnements / 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."

Il y a probablement une façon beaucoup plus jolie de le faire, mais cela semblerait le faire pour moi.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top