вывод системного журнала для примера log4r - PullRequest
3 голосов
/ 14 октября 2008

Может кто-нибудь опубликовать пример использования syslog outputter для log4r, сейчас я использую stdout, но хочу войти в syslog.

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

Радж


Спасибо также за следующие сообщения в блоге.

Блог Ангреза: Log4r - Использование и примеры

ProgrammingStuff: Log4r

Ответы [ 2 ]

9 голосов
/ 15 октября 2008

Хам, отвечая на мой собственный вопрос, но я нашел ответ на него и добавил его для последующих поисков.

По какой-то причине мне нужно явно потребовать 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."

Радж

1 голос
/ 20 мая 2009

Я нашел это очень полезным, но мне пришлось внести дополнительные изменения. Что-то пыталось повторно открыть системный журнал, вызывая необработанную ошибку 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."

Вероятно, есть гораздо более симпатичный способ сделать это, но, похоже, это поможет мне.

...