Stevenson now uses symbols instead of integers to set log level

This commit is contained in:
Parker Moore 2014-05-06 13:03:56 -04:00
parent 63e959e4e1
commit 2aa8908948
3 changed files with 28 additions and 15 deletions

View File

@ -25,7 +25,7 @@ module Jekyll
options = configuration_from_options(options) options = configuration_from_options(options)
site = Jekyll::Site.new(options) site = Jekyll::Site.new(options)
Jekyll.logger.log_level = Jekyll::Stevenson::ERROR if options['quiet'] Jekyll.logger.log_level = :error if options['quiet']
build(site, options) build(site, options)
watch(site, options) if options['watch'] watch(site, options) if options['watch']

View File

@ -2,17 +2,19 @@ module Jekyll
class Stevenson class Stevenson
attr_accessor :log_level attr_accessor :log_level
DEBUG = 0 LOG_LEVELS = {
INFO = 1 debug: 0,
WARN = 2 info: 1,
ERROR = 3 warn: 2,
error: 3
}
# Public: Create a new instance of Stevenson, Jekyll's logger # Public: Create a new instance of Stevenson, Jekyll's logger
# #
# level - (optional, integer) the log level # level - (optional, symbol) the log level
# #
# Returns nothing # Returns nothing
def initialize(level = INFO) def initialize(level = :info)
@log_level = level @log_level = level
end end
@ -23,7 +25,7 @@ module Jekyll
# #
# Returns nothing # Returns nothing
def debug(topic, message = nil) def debug(topic, message = nil)
$stdout.puts(message(topic, message)) if log_level <= DEBUG $stdout.puts(message(topic, message)) if should_log(:debug)
end end
# Public: Print a jekyll message to stdout # Public: Print a jekyll message to stdout
@ -33,7 +35,7 @@ module Jekyll
# #
# Returns nothing # Returns nothing
def info(topic, message = nil) def info(topic, message = nil)
$stdout.puts(message(topic, message)) if log_level <= INFO $stdout.puts(message(topic, message)) if should_log(:info)
end end
# Public: Print a jekyll message to stderr # Public: Print a jekyll message to stderr
@ -43,7 +45,7 @@ module Jekyll
# #
# Returns nothing # Returns nothing
def warn(topic, message = nil) def warn(topic, message = nil)
$stderr.puts(message(topic, message).yellow) if log_level <= WARN $stderr.puts(message(topic, message).yellow) if should_log(:warn)
end end
# Public: Print a jekyll error message to stderr # Public: Print a jekyll error message to stderr
@ -53,7 +55,7 @@ module Jekyll
# #
# Returns nothing # Returns nothing
def error(topic, message = nil) def error(topic, message = nil)
$stderr.puts(message(topic, message).red) if log_level <= ERROR $stderr.puts(message(topic, message).red) if should_log(:error)
end end
# Public: Print a Jekyll error message to stderr and immediately abort the process # Public: Print a Jekyll error message to stderr and immediately abort the process
@ -85,5 +87,16 @@ module Jekyll
def formatted_topic(topic) def formatted_topic(topic)
"#{topic} ".rjust(20) "#{topic} ".rjust(20)
end end
# Public: Determine whether the current log level warrants logging at the
# proposed level.
#
# level_of_message - the log level of the message (symbol)
#
# Returns true if the log level of the message is greater than or equal to
# this logger's log level.
def should_log(level_of_message)
LOG_LEVELS.fetch(log_level) <= LOG_LEVELS.fetch(level_of_message)
end
end end
end end

View File

@ -166,9 +166,9 @@ class TestConfiguration < Test::Unit::TestCase
end end
should "successfully load a TOML file" do should "successfully load a TOML file" do
Jekyll.logger.log_level = Jekyll::Stevenson::WARN Jekyll.logger.log_level = :warn
assert_equal Jekyll::Configuration::DEFAULTS.merge({ "baseurl" => "/you-beautiful-blog-you", "title" => "My magnificent site, wut" }), Jekyll.configuration({ "config" => [@paths[:toml]] }) assert_equal Jekyll::Configuration::DEFAULTS.merge({ "baseurl" => "/you-beautiful-blog-you", "title" => "My magnificent site, wut" }), Jekyll.configuration({ "config" => [@paths[:toml]] })
Jekyll.logger.log_level = Jekyll::Stevenson::INFO Jekyll.logger.log_level = :info
end end
should "load multiple config files" do should "load multiple config files" do