Syslog output for log4r example

Can someone post an example of using syslog output for log4r, I am currently using stdout but want to log in to syslog.

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

Rajah


Thanks also to the following blog posts.

Angrez Blog: Log4r - Usage and Examples

ProgrammingStuff: Log4r

+3
source share
2 answers

Kind of a lame answer to my own question, but I found the answer to this and added it for later searches.

For some reason I will need to require log4r / outputter / syslogoutputter to explicitly use another wise SyslogOutputter, which will result in the error "uninitialized constant SyslogOutputter (NameError)". Other output devices do not seem to have this problem.

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

Rajah

+9
source

, . - syslog, RuntimeError. ax-crazy override /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

Source: https://habr.com/ru/post/1698259/


All Articles