Skip to content

Commit 2eb6816

Browse files
committed
Allow passing an IOStream to FileLogger.
1 parent e949dad commit 2eb6816

File tree

2 files changed

+19
-11
lines changed

2 files changed

+19
-11
lines changed

src/filelogger.jl

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,14 @@ struct FileLogger <: AbstractLogger
33
always_flush::Bool
44
end
55

6-
function FileLogger(path; append=false, always_flush=true)
6+
function FileLogger(path; append=false, kwargs...)
77
filehandle = open(path, append ? "a" : "w")
8-
FileLogger(SimpleLogger(filehandle, BelowMinLevel), always_flush)
8+
FileLogger(filehandle; kwargs...)
99
end
1010

11+
function FileLogger(filehandle::IOStream; always_flush=true)
12+
FileLogger(SimpleLogger(filehandle, BelowMinLevel), always_flush)
13+
end
1114

1215
function handle_message(filelogger::FileLogger, args...; kwargs...)
1316
handle_message(filelogger.logger, args...; kwargs...)

test/runtests.jl

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,16 +33,21 @@ end
3333

3434
@testset "File" begin
3535
mktempdir() do dir
36-
filepath = joinpath(dir, "log")
37-
with_logger(FileLogger(filepath)) do
38-
@info "first"
39-
@warn "second"
40-
@info "third"
36+
for (filepath, sink) in [
37+
(f = joinpath(dir, "log"); (f, f)), # Filepath
38+
(f = joinpath(dir, "log_io"); (f, open(f, "w"))), # IOStream
39+
]
40+
with_logger(FileLogger(sink)) do
41+
@info "first"
42+
@warn "second"
43+
@info "third"
44+
end
45+
sink isa IOStream && close(sink)
46+
logtext = read(filepath, String)
47+
@test occursin("first", logtext)
48+
@test occursin("second", logtext)
49+
@test occursin("third", logtext)
4150
end
42-
logtext = String(read(filepath))
43-
@test occursin("first", logtext)
44-
@test occursin("second", logtext)
45-
@test occursin("third", logtext)
4651
end
4752
end
4853

0 commit comments

Comments
 (0)