Skip to content

Commit 8a0d3d2

Browse files
authored
Merge pull request #6 from c42f/cjf/more-console-logger-support
More console logger support
2 parents 494cdaf + d54aa03 commit 8a0d3d2

File tree

4 files changed

+41
-5
lines changed

4 files changed

+41
-5
lines changed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ keywords = ["configure", "compose", "logging", "logger"]
44
authors = ["Tanmay Mohapatra <[email protected]>"]
55
license = "MIT"
66
desc = "Compose loggers and logger ensembles declaratively using configuration files"
7-
version = "0.2.0"
7+
version = "0.2.1"
88

99
[deps]
1010
Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f"

src/connectors.jl

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import ..LogCompose: logcompose, log_min_level
1212

1313
logcompose(::Type{Logging.NullLogger}, config::Dict{String,Any}, logger_config::Dict{String,Any}) = Logging.NullLogger()
1414

15-
function logcompose(::Type{T}, config::Dict{String,Any}, logger_config::Dict{String,Any}) where {T <: Union{Logging.SimpleLogger, Logging.ConsoleLogger}}
15+
function logcompose(::Type{Logging.SimpleLogger}, config::Dict{String,Any}, logger_config::Dict{String,Any})
1616
level = log_min_level(logger_config, "Info")
1717

1818
streamname = strip(get(logger_config, "stream", "stdout"))
@@ -22,7 +22,34 @@ function logcompose(::Type{T}, config::Dict{String,Any}, logger_config::Dict{Str
2222
streamname == "stderr" ? stderr :
2323
open(streamname, "a+")
2424

25-
T(stream, level)
25+
Logging.SimpleLogger(stream, level)
26+
end
27+
28+
function logcompose(::Type{Logging.ConsoleLogger}, config::Dict{String,Any}, logger_config::Dict{String,Any})
29+
level = log_min_level(logger_config, "Info")
30+
31+
streamname = strip(get(logger_config, "stream", "stdout"))
32+
@assert !isempty(streamname)
33+
34+
stream = streamname == "stdout" ? stdout :
35+
streamname == "stderr" ? stderr :
36+
open(streamname, "a+")
37+
38+
color = get(logger_config, "color", nothing)
39+
color === nothing || (stream = IOContext(stream, :color=>color))
40+
41+
displaysize = get(logger_config, "displaysize", nothing)
42+
if displaysize !== nothing
43+
if !(displaysize isa AbstractVector{Int}) || length(displaysize) != 2
44+
error("Expected [height,width] but got displaysize=$displaysize")
45+
end
46+
stream = IOContext(stream, :displaysize=>Tuple(displaysize))
47+
end
48+
49+
show_limited = get(logger_config, "show_limited", true)
50+
color isa Bool || error("Expected boolean but got show_limited=$show_limited")
51+
52+
Logging.ConsoleLogger(stream, level; show_limited=show_limited)
2653
end
2754

2855
end # module Connectors

test/runtests.jl

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,19 @@ function test()
2222
let logger = LogCompose.logger(config, "console"; section="loggers")
2323
with_logger(logger) do
2424
@info("testconsole")
25+
@info("testconsole2", a=[111,222,333])
2526
end
2627
flush(logger.stream)
2728
end
2829
end
2930
close(writer)
30-
log_file_contents = readlines(Base.pipe_reader(pipe))
31-
@test findfirst("testconsole", log_file_contents[1]) !== nothing
31+
log_file_contents = String(read(Base.pipe_reader(pipe)))
32+
@test findfirst("testconsole", log_file_contents) !== nothing
33+
@test findfirst("testconsole2", log_file_contents) !== nothing
34+
# setting displaysize limits output
35+
@test findfirst("111", log_file_contents) === nothing
36+
# ANSI color codes were enabled
37+
@test findfirst("\e", log_file_contents) !== nothing
3238
close(pipe)
3339
end
3440

test/testapp.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ stream = "simple.log" # stdout (default), stderr or a filepath
77
type = "Logging.ConsoleLogger"
88
# min_level = "Debug" # Debug, Info (default) or Error
99
stream = "stdout" # stdout (default), stderr or a filepath
10+
color = true # force color output, even to non-tty
11+
# show_limited = false # disable limited output
12+
displaysize = [3, 50] # Set display size for formatting
1013

1114
[loggers.null]
1215
type = "Logging.NullLogger"

0 commit comments

Comments
 (0)