47 lines
859 B
Ruby
47 lines
859 B
Ruby
require 'sass/logger/log_level'
|
|
|
|
class Sass::Logger::Base
|
|
include Sass::Logger::LogLevel
|
|
|
|
attr_accessor :log_level
|
|
attr_accessor :disabled
|
|
attr_accessor :io
|
|
|
|
log_level :trace
|
|
log_level :debug
|
|
log_level :info
|
|
log_level :warn
|
|
log_level :error
|
|
|
|
def initialize(log_level = :debug, io = nil)
|
|
self.log_level = log_level
|
|
self.io = io
|
|
end
|
|
|
|
def logging_level?(level)
|
|
!disabled && self.class.log_level?(level, log_level)
|
|
end
|
|
|
|
# Captures all logger messages emitted during a block and returns them as a
|
|
# string.
|
|
def capture
|
|
old_io = io
|
|
self.io = StringIO.new
|
|
yield
|
|
io.string
|
|
ensure
|
|
self.io = old_io
|
|
end
|
|
|
|
def log(level, message)
|
|
_log(level, message) if logging_level?(level)
|
|
end
|
|
|
|
def _log(level, message)
|
|
if io
|
|
io.puts(message)
|
|
else
|
|
Kernel.warn(message)
|
|
end
|
|
end
|
|
end
|