Skip to content

Commit 7c0aacd

Browse files
authored
Merge pull request #312 from kares/logger-silence-dejavu
LoggerSilence support within Rails
2 parents 1c6eb6a + cac0254 commit 7c0aacd

File tree

3 files changed

+28
-17
lines changed

3 files changed

+28
-17
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
require 'active_support/logger_silence' unless defined?(ActiveSupport::LoggerSilence)
2+
3+
module JRuby::Rack
4+
class RailsLogger < JRuby::Rack::Logger
5+
include ActiveSupport::LoggerSilence
6+
end
7+
end

src/main/ruby/jruby/rack/rails/railtie.rb

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,16 +32,21 @@ class Railtie < ::Rails::Railtie
3232

3333
initializer 'set_servlet_logger', :before => :initialize_logger do |app|
3434
app.config.logger ||= begin
35-
logger = JRuby::Rack.logger
35+
require 'jruby/rack/rails/rails_logger'
36+
logger = JRuby::Rack::RailsLogger.new(JRuby::Rack.context)
3637
config = app.config
37-
log_level = config.log_level || :info
38-
logger.level = logger.class.const_get(log_level.to_s.upcase)
38+
log_level = config.log_level
39+
# NOTE: not much sense to set the level to a default (e.g. :info), esp. with Java logging backends
40+
# one could also argue we should disable silencing
41+
#
42+
# JRuby::Rack::RailsLogger.silencer = false
43+
#
44+
# although that would potentially only make sense when Java (jruby.rack.logging) backend is used.
45+
logger.level = logger.class.const_get(log_level.to_s.upcase) if log_level
3946
log_formatter = config.log_formatter if config.respond_to?(:log_formatter)
4047
logger.formatter = log_formatter if log_formatter && logger.respond_to?(:formatter=)
4148
require 'active_support/tagged_logging' unless defined?(ActiveSupport::TaggedLogging)
42-
logger = ActiveSupport::TaggedLogging.new(logger) # returns a logger.clone
43-
logger.singleton_class.send(:include, ActiveSupport::LoggerSilence) if defined?(ActiveSupport::LoggerSilence)
44-
logger
49+
ActiveSupport::TaggedLogging.new(logger) # returns a logger.clone
4550
end
4651
end
4752

src/spec/ruby/jruby/rack/rails_booter_spec.rb

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -198,12 +198,9 @@ def logger=(logger); @logger = logger; end
198198
end
199199

200200
it "gets set as config.logger (wrapped with tagged logging and logger_silence)" do
201-
logger = JRuby::Rack::Logger.new STDERR
202-
@config.stub(:log_level).and_return(:info)
201+
@config.stub(:log_level).and_return(nil)
203202
@config.stub(:log_formatter).and_return(nil)
204203

205-
JRuby::Rack.should_receive(:logger).and_return(logger)
206-
207204
log_initializer.last.call(@app)
208205
rails_logger = @app.config.logger
209206
# ActiveSupport::TaggedLogging.new clones the original logger instance
@@ -214,20 +211,22 @@ def logger=(logger); @logger = logger; end
214211
expect(rails_logger.silencer).to be true
215212
# sanity check silence works:
216213
value_returned = rails_logger.silence(Logger::WARN) { |logger| logger.class.name }
217-
expect(value_returned).to eql('JRuby::Rack::Logger')
214+
expect(value_returned).to eql('JRuby::Rack::RailsLogger')
218215
end
216+
expect(rails_logger.level).to be(nil) # should not be set unless user configured `config.log_level`
219217
end
220218

221219
it "has a configurable log level" do
222-
@config.instance_eval do
223-
def logger; @logger; end
224-
def logger=(logger); @logger = logger; end
225-
end
220+
# @config.instance_eval do
221+
# def logger; @logger; end
222+
# def logger=(logger); @logger = logger; end
223+
# end
226224
@config.stub(:log_formatter).and_return(nil)
227225
@config.should_receive(:log_level).and_return(:error)
228226

229-
log_initializer.last.call(@app) ##
230-
@app.config.logger.level.should be(JRuby::Rack::Logger::ERROR)
227+
log_initializer.last.call(@app)
228+
rails_logger = @app.config.logger
229+
expect(rails_logger.level).to be(JRuby::Rack::Logger::ERROR)
231230
end
232231

233232
private

0 commit comments

Comments
 (0)