class Sass::Logger::Delayed
A logger that delays messages until they’re explicitly flushed to an inner logger.
This can be installed around the current logger by calling {#install!}, and the original logger can be replaced by calling {#uninstall!}. The log messages can be flushed by calling {#flush}.
Public Class Methods
install!()
click to toggle source
Installs a new delayed logger as the current Sass
logger, wrapping the original logger.
This can be undone by calling {#uninstall!}.
@return [Sass::Logger::Delayed] The newly-created logger.
# File lib/sass/logger/delayed.rb, line 16 def self.install! logger = Sass::Logger::Delayed.new(Sass.logger) Sass.logger = logger logger end
new(inner)
click to toggle source
Creates a delayed logger wrapping ‘inner`.
@param inner [Sass::Logger::Base] The wrapped logger.
# File lib/sass/logger/delayed.rb, line 25 def initialize(inner) self.log_level = inner.log_level @inner = inner @messages = [] end
Public Instance Methods
_log(level, message)
click to toggle source
# File lib/sass/logger/delayed.rb, line 47 def _log(level, message) @messages << [level, message] end
flush()
click to toggle source
Flushes all queued logs to the wrapped logger.
# File lib/sass/logger/delayed.rb, line 32 def flush @messages.each {|(l, m)| @inner.log(l, m)} end
uninstall!()
click to toggle source
Uninstalls this logger from {Sass.logger}. This should only be called if the logger was installed using {#install!}
# File lib/sass/logger/delayed.rb, line 38 def uninstall! if Sass.logger != self throw Exception.new("Can't uninstall a logger that's not currently installed.") end @inner.log_level = log_level Sass.logger = @inner end