Project

General

Profile

Download (1.35 KB) Statistics
| Branch: | Tag: | Revision:
038fa6cf Dmitri Dolguikh
require 'logger'
335a1610 Lukas Zapletal
begin
require 'syslog/logger'
::Syslog::Logger.class_eval { alias_method :write, :info }
rescue LoadError
puts "Setting log_file=SYSLOG not supported on this platform, ignoring"
end
e09de9d9 Ohad Levy
335a1610 Lukas Zapletal
# ::Rack::CommonLogger expects loggers to implement 'write' method
Logger.class_eval { alias_method :write, :info }
038fa6cf Dmitri Dolguikh
module Proxy
module Log
@@logger = nil

def logger
915c16dd Dmitri Dolguikh
@@logger ||= ::Proxy::Log.logger
038fa6cf Dmitri Dolguikh
end

335a1610 Lukas Zapletal
def self.default_logger(log_file)
# We keep the last 6 10MB log files
::Logger.new(log_file, 6, 1024*1024*10)
end

038fa6cf Dmitri Dolguikh
def self.logger
31728207 Lukas Zapletal
log_file = ::Proxy::SETTINGS.log_file
if log_file.upcase == 'STDOUT'
335a1610 Lukas Zapletal
if SETTINGS.daemon
puts "Settings log_file=STDOUT and daemon=true are incompatible, exiting..."
exit 1
end
31728207 Lukas Zapletal
logger = ::Logger.new(STDOUT)
335a1610 Lukas Zapletal
elsif log_file.upcase == 'SYSLOG'
begin
logger = ::Syslog::Logger.new 'foreman-proxy'
rescue
logger = default_logger(log_file)
end
31728207 Lukas Zapletal
else
335a1610 Lukas Zapletal
logger = default_logger(log_file)
31728207 Lukas Zapletal
end
038fa6cf Dmitri Dolguikh
logger.level = ::Logger.const_get(::Proxy::SETTINGS.log_level.upcase)
logger
end
end

class LoggerMiddleware
915c16dd Dmitri Dolguikh
include Log

038fa6cf Dmitri Dolguikh
def initialize(app)
@app = app
end

def call(env)
915c16dd Dmitri Dolguikh
env['rack.logger'] = logger
038fa6cf Dmitri Dolguikh
@app.call(env)
1728ab70 Paul Kelly
end
e09de9d9 Ohad Levy
end
end