Skip to content

Commit

Permalink
Port more MicroLogging changes - remove log config from core
Browse files Browse the repository at this point in the history
  • Loading branch information
c42f committed Nov 5, 2017
1 parent bd6a3ae commit 8319628
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 48 deletions.
60 changes: 13 additions & 47 deletions base/logging.jl
Original file line number Diff line number Diff line change
Expand Up @@ -433,64 +433,30 @@ current_logger() = current_logstate().logger
"""
SimpleLogger(stream=STDERR, min_level=Info)
Simplistic logger for logging all messages with level not less than `min_level`
to `stream`.
Simplistic logger for logging all messages with level greater than or equal to
`min_level` to `stream`.
"""
struct SimpleLogger <: AbstractLogger
stream::IO
min_level::LogLevel
end
SimpleLogger(stream::IO=STDERR, level=Info) = SimpleLogger(stream, parse_level(level))

function configure_logging(logger::SimpleLogger; min_level=Info)
SimpleLogger(logger.stream, parse_level(min_level))
end
SimpleLogger(stream::IO=STDERR, level=Info) = SimpleLogger(stream, level)

shouldlog(logger::SimpleLogger, level, args...) = !(level < logger.min_level)

min_enabled_level(logger::SimpleLogger) = logger.min_level

function handle_message(logger::SimpleLogger, level, msg, _module, group, id,
function handle_message(logger::SimpleLogger, level, message, _module, group, id,
filepath, line; kwargs...)
println(logger.stream, "$level [$(basename(String(filepath))):$line]: $msg")
end


#-------------------------------------------------------------------------------
# Logger configuration

parse_level(level) = level
parse_level(level::String) = parse_level(Symbol(lowercase(level)))
function parse_level(level::Symbol)
if level == :belowminlevel return BelowMinLevel
elseif level == :debug return Debug
elseif level == :info return Info
elseif level == :warn return Warn
elseif level == :error return Error
elseif level == :abovemaxlevel return AboveMaxLevel
else
throw(ArgumentError("Unknown log level $level"))
levelstr = string(level)
color = level < Info ? :blue :
level < Warn ? :cyan :
level < Error ? :yellow : :red
print_with_color(color, logger.stream, first(levelstr), "- ", bold=true)
print(logger.stream, replace(message, '\n', "\n| "))
println(logger.stream, " -", levelstr, ":", _module, ":", basename(filepath), ":", line)
for (key,val) in kwargs
println(logger.stream, "| ", key, " = ", val)
end
end

"""
configure_logging(args...; kwargs...)
Call `configure_logging` with the current logger, and update cached log
filtering information.
"""
function configure_logging(args...; kwargs...)
logger = configure_logging(current_logger(), args...; kwargs...)::AbstractLogger
if haskey(task_local_storage(), :LOGGER_STATE)
task_local_storage()[:LOGGER_STATE] = LogState(logger)
else
global _global_logstate = LogState(logger)
end
logger
end

configure_logging(::AbstractLogger, args...; kwargs...) =
throw(ArgumentError("No configure_logging method matches the provided arguments."))


init_logging() = global_logger(SimpleLogger(STDERR))
2 changes: 1 addition & 1 deletion base/sysimg.jl
Original file line number Diff line number Diff line change
Expand Up @@ -442,7 +442,7 @@ isdefined(Core, :Inference) && Docs.loaddocs(Core.Inference.CoreDocs.DOCS)
function __init__()
# Base library init
reinit_stdio()
init_logging()
global_logger(SimpleLogger(STDERR))
Multimedia.reinit_displays() # since Multimedia.displays uses STDOUT as fallback
early_init()
init_load_path()
Expand Down

0 comments on commit 8319628

Please sign in to comment.