Async-logger-last-error
Read the last error string recorded by the async logger worker. This helper gives the textual detail behind has_failed().
Interface
pub fn[S] AsyncLogger::last_error(self : AsyncLogger[S]) -> String {}input
self : AsyncLogger[S]- Async logger whose last worker error should be inspected.
output
String- Last recorded worker error message, or an empty string if no error was recorded.
Explanation
Detailed rules explaining key parameters and behaviors
- A later
run()clears the stored error string only after that run has actually started. - If the worker loop fails, the error text is captured from the raised exception.
- An empty string normally means no failure has been recorded.
- Once a failure string is recorded, it stays in place until a later
run()invocation actually starts and clears it. - Failure-driven shutdown does not clear the stored error string by itself, so the same
last_error()text can remain visible even after the logger is already closed. - This helper reports worker execution errors, not ordinary overflow or backpressure conditions.
- That reset happens before the restarted worker resumes drain work.
How to Use
Here are some specific examples provided.
When Need Failure Detail In Diagnostics
When a compact error message should be surfaced to operators:
if logger.has_failed() {
println(logger.last_error())
}In this example, the error string is only read when failure is present.
When Export Full Async State
When custom diagnostics want to include the last error field directly:
let err = logger.last_error()In this example, the helper provides the textual failure detail without building a full snapshot.
Error Case
e.g.:
If no runtime failure has occurred, the method returns an empty string.
An empty string does not prove the queue is empty or the worker is idle; it only means no failure string is currently recorded.
If callers need broader context than just the error text, they should use
state().close()orshutdown()do not clear a previously recorded error string by themselves; the reset happens only after a laterrun()has already started.If the same error string is still present after shutdown, that does not by itself mean cleanup was skipped; the logger may already be
is_closed=truewhile the remaining pending-versus-dropped outcome still reflects the active runtime's shutdown path.
Notes
Read this helper together with
has_failed()when interpreting worker health.The stored value is a diagnostic string, not a typed error object.
Pair it with
is_running()orpending_count()when you need to know whether failure left the logger with unfinished backlog, because the previous error string can coexist with remaining pending records until later cleanup or restart.