qol fix error handling in deinit
This commit is contained in:
@@ -12,7 +12,7 @@ pub const Level = enum {
|
||||
fatal,
|
||||
|
||||
/// Returns the fixed-width, uppercase label used as the log-line
|
||||
/// prefix for `level` (e.g. `"INFO "` for `.info`), derived from
|
||||
/// prefix for `level` (e.g. `"[INFO] "` for `.info`), derived from
|
||||
/// the enum's own field name via `@tagName`.
|
||||
/// All labels are padded to the width of the longest level name,
|
||||
/// so prefixes line up in a fixed-width terminal/file.
|
||||
@@ -45,14 +45,10 @@ pub const Level = enum {
|
||||
/// `level` sets the minimum severity that will be written; messages
|
||||
/// below this level are discarded.
|
||||
///
|
||||
/// `buffer` is the size, in bytes, of the internal write buffer
|
||||
/// allocated for `writer`. Larger buffers reduce the number of
|
||||
/// underlying writes at the cost of more memory and higher latency
|
||||
/// `buffer` is the size, in bytes, allocated for the internal write
|
||||
/// buffer. Larger buffers reduce the number of underlying
|
||||
/// writes at the cost of more memory and higher latency
|
||||
/// before data is flushed.
|
||||
///
|
||||
/// `writer` is the underlying file the logger writes to (e.g. stderr
|
||||
/// or a log file). The logger takes no ownership of it beyond the
|
||||
/// lifetime of the wrapping `std.Io.File.Writer`.
|
||||
pub const InitOptions = struct {
|
||||
pub const ErrorCallback = Logger.ErrorCallback;
|
||||
|
||||
@@ -139,8 +135,9 @@ pub const Logger = struct {
|
||||
/// and `WriterState`.
|
||||
///
|
||||
/// Safe to call once initialization via `init` has succeeded.
|
||||
/// Flush errors are silently ignored, since there is no caller
|
||||
/// left to meaningfully report them to at teardown time.
|
||||
/// Flush and lock errors are reported via `on_error` if set,
|
||||
/// but otherwise ignored, since there is no caller left to
|
||||
/// meaningfully return them to at teardown time.
|
||||
///
|
||||
/// Must not be called more than once, as the underlying
|
||||
/// allocations are freed unconditionally.
|
||||
@@ -148,10 +145,10 @@ pub const Logger = struct {
|
||||
{
|
||||
if (logger.state.mutex.lock(logger.io)) |_|
|
||||
{
|
||||
logger.state.writer.interface.flush() catch {};
|
||||
logger.state.writer.interface.flush() catch |e| if (logger.on_error) |h| h(e);
|
||||
logger.state.mutex.unlock(logger.io);
|
||||
}
|
||||
else |_| {}
|
||||
else |e| { if (logger.on_error) |h| h(e); }
|
||||
|
||||
logger.allocator.free(logger.state.buffer);
|
||||
logger.allocator.destroy(logger.state);
|
||||
|
||||
Reference in New Issue
Block a user