Class: Console::Adapter::Rails::Logger

Inherits:
Compatible::Logger
  • Object
show all
Defined in:
lib/console/adapter/rails/logger.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeLogger

Returns a new instance of Logger.



27
28
29
30
31
# File 'lib/console/adapter/rails/logger.rb', line 27

def initialize(...)
	super
	
	@silence_key = :"#{self.class}.silence.#{object_id}"
end

Class Method Details

.apply!(configuration: ::Rails.configuration) ⇒ Object



54
55
56
57
58
59
60
61
62
# File 'lib/console/adapter/rails/logger.rb', line 54

def self.apply!(configuration: ::Rails.configuration)
	# Set the logger to a compatible logger to catch `Rails.logger` output:
	configuration.logger = ActiveSupport::TaggedLogging.new(
		Logger.new(::Rails)
	)
	
	# Delete `Rails::Rack::Logger` as it also doubles up on request logs:
	configuration.middleware.delete ::Rails::Rack::Logger
end

Instance Method Details

#add(severity, message = nil, progname = nil, &block) ⇒ Object



48
49
50
51
52
# File 'lib/console/adapter/rails/logger.rb', line 48

def add(severity, message = nil, progname = nil, &block)
	return if silenced?(severity)
	
	super(severity, message, progname, &block)
end

#silence(severity = Logger::ERROR) ⇒ Object

Silences the logger for the duration of the block.



34
35
36
37
38
39
40
# File 'lib/console/adapter/rails/logger.rb', line 34

def silence(severity = Logger::ERROR)
	current = Fiber[@silence_key]
	Fiber[@silence_key] = severity
	yield(self)
ensure
	Fiber[@silence_key] = current
end

#silenced?(severity) ⇒ Boolean

Returns:

  • (Boolean)


42
43
44
45
46
# File 'lib/console/adapter/rails/logger.rb', line 42

def silenced?(severity)
	if current = Fiber[@silence_key]
		severity < current
	end
end