Struct slog_async::AsyncGuard
source · pub struct AsyncGuard { /* private fields */ }
Expand description
Async guard
All Drain
s are reference-counted by every Logger
that uses them.
Async
drain runs a worker thread and sends a termination (and flushing)
message only when being drop
ed. Because of that it’s actually
quite easy to have a left-over reference to a Async
drain, when
terminating: especially on panic
s or similar unwinding event. Typically
it’s caused be a leftover reference like Logger
in thread-local variable,
global variable, or a thread that is not being joined on. It might be a
program bug, but logging should work reliably especially in case of bugs.
AsyncGuard
is a remedy: it will send a flush and termination message to
a Async
worker thread, and wait for it to finish on it’s own drop
. Using it
is a simplest way to guarantee log flushing when using slog_async
.