/
slf4r_railtie.rb
35 lines (33 loc) · 1.47 KB
/
slf4r_railtie.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class Slf4rRailtie < Rails::Railtie
initializer "set_servlet_logger", :after => :initialize_logger do |app|
if defined?(Slf4r::LoggerFacade)
@logger = Slf4r::LoggerFacade.new("Rails::Setup")
@logger.info {
l = @logger.instance_variable_get('@logger'.to_sym)
logger_name = l.respond_to?(:java_class) ? l.java_class : l.class
"setup slf4r logger #{logger_name}"
}
app.config.logger = Rails.logger = setup_logger(Rails)
app.config.action_controller.logger = setup_logger(ActionController)
app.config.active_record.logger = setup_logger(ActiveRecord)
app.config.action_view.logger = setup_logger(ActionView) if app.config.action_view.respond_to? :logger=
app.config.action_mailer.logger = setup_logger(ActionMailer)
ActiveSupport::Cache::Store.logger = setup_logger(ActiveSupport::Cache::Store)
clazz = if @logger.instance_variable_get(:@logger).respond_to?(:java_class)
@logger.instance_variable_get(:@logger).java_class
else
@logger.instance_variable_get(:@logger).class
end
else
require 'slf4r/wrapped_logger'
l = Slf4r::LoggerFacade4WrappedLogger.logger = Rails.logger
l.info "setup slf4r logger wrapper"
end
end
private
def self.setup_logger(category)
l = Slf4r::LoggerFacade.new((category == Rails ? "" : "Rails::") + category.to_s)
@logger.info("setup logger for '#{l.name}'") if @logger
l
end
end