Thread-safe alternative to `redirect_stdio`?

It looks like ScopedStreams.jl (suggested by @JamesNZ) does the job! I just had to update log_stdout as follows:

using ScopedStreams
@gen_scoped_stream_methods

function log_stdout(f; label = "")

    io = IOBuffer()
    local result
    try
        result = redirect_stream(f, io)
    finally
        out = String(take!(io))
        isempty(out) || @info label * "\n" * out
    end

    return result

end