Skip to content

Commit d61eb88

Browse files
JJMintonJeremy
andauthored
Supress logging within writeproto to prevent infinite recursion. (#100)
* Supress logging within `writeproto` to prevent infinite recursion. * Rename `logless_writeproto` to `_writeproto`. Co-authored-by: Jeremy <[email protected]>
1 parent 25d8db2 commit d61eb88

File tree

4 files changed

+23
-3
lines changed

4 files changed

+23
-3
lines changed

src/TensorBoardLogger.jl

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ end
1616
using StatsBase: Histogram, fit
1717

1818
using Base.CoreLogging: CoreLogging, AbstractLogger, LogLevel, Info,
19-
handle_message, shouldlog, min_enabled_level, catch_exceptions
19+
handle_message, shouldlog, min_enabled_level, catch_exceptions, with_logger,
20+
NullLogger
2021

2122
export TBLogger, reset!, set_step!, increment_step!, set_step_increment!
2223
export log_histogram, log_value, log_vector, log_text, log_image, log_images,

src/event.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ format. The format follows the following rule (in bytes)
2828
"""
2929
function write_event(out::IOStream, event::Event)
3030
data = PipeBuffer();
31-
writeproto(data, event)
31+
_writeproto(data, event)
3232

3333
#header
3434
header = collect(reinterpret(UInt8, [data.size]))

src/utils.jl

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ end
88

99
function serialize_proto(data::ProtoType)
1010
pb = PipeBuffer()
11-
writeproto(pb, data)
11+
_writeproto(pb, data)
1212
pb.data
1313
end
1414

@@ -17,3 +17,13 @@ function serialize_proto(data::Any)
1717
write(pb, data)
1818
pb.data
1919
end
20+
21+
"""
22+
wrapper for writeproto that supresses logging to prevent infinite
23+
recursion.
24+
"""
25+
function _writeproto(pb::IO, obj)
26+
with_logger(NullLogger()) do
27+
writeproto(pb, obj)
28+
end
29+
end

test/runtests.jl

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -305,6 +305,15 @@ ENV["DATADEPS_ALWAYS_ACCEPT"] = true
305305
include("deserialization.jl")
306306
end
307307

308+
@testset "Debug level" begin
309+
logger = TBLogger("tensorboard_logs/run", min_level=Logging.Debug)
310+
with_logger(logger) do
311+
@info "loss" loss=10.
312+
@debug "loss" loss=10.
313+
end
314+
@test TensorBoardLogger.step(logger) == 2
315+
end
316+
308317
#cleanup
309318
rm(test_log_dir, force=true, recursive=true)
310319

0 commit comments

Comments
 (0)