Skip to main content

Error

Enum Error 

Source
#[non_exhaustive]
pub enum Error { Io(Error), Format(Error), Configuration(&'static str), Closed, Custom(Box<dyn Error + Send + Sync + 'static>), }
Available on crate feature std only.
Expand description

Errors produced by the logging pipeline.

Logging is best-effort by design: crate::Logger::log and the macros never return these errors. They reach you through crate::Logger::try_log / crate::Logger::try_emit, through crate::Logger::flush and crate::Logger::shutdown, and through the handler installed with crate::LoggerBuilder::on_error.

The enum is #[non_exhaustive]; match it with a wildcard arm.

§Examples

use log_io::Error;

let err = Error::from(std::io::Error::other("disk full"));
assert_eq!(err.to_string(), "log sink I/O error: disk full");
assert!(std::error::Error::source(&err).is_some());

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

Io(Error)

The sink’s destination returned an I/O error (disk full, broken pipe, permission denied, …). Retrying may help for transient conditions; persistent failures usually need operator action. The record that triggered it was not written to that sink, but every other sink still received it.

§

Format(Error)

A formatter failed. With the built-in formats this only happens when a lazily formatted value (Value::Display, Value::Debug, Value::Error) or a message’s format arguments return an error from their own fmt implementation; it indicates a bug in that implementation or in a custom crate::format::Format.

§

Configuration(&'static str)

A sink or format rejected its configuration. Among the built-in components only crate::sink::NonBlockingBuilder::build returns it (for an invalid thread name); fix the configuration.

§

Closed

The sink cannot serve the request. Either its background worker exited (for example after the writer panicked), in which case records sent to it are lost and the sink must be rebuilt; or a flush or shutdown was requested from the sink’s own worker thread (its writer or on_error handler), which cannot wait for itself.

§

Custom(Box<dyn Error + Send + Sync + 'static>)

An error from a custom sink that does not fit the other variants. Construct with Error::custom.

Implementations§

Source§

impl Error

Source

pub fn custom<E>(error: E) -> Self
where E: Into<Box<dyn Error + Send + Sync + 'static>>,

Wrap an arbitrary error from a custom sink.

§Examples
let err = log_io::Error::custom(std::fmt::Error);
assert!(matches!(err, log_io::Error::Custom(_)));

Trait Implementations§

Source§

impl Debug for Error

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for Error

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Error for Error

Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0:

use the Display impl or to_string()

1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl From<Error> for Error

Source§

fn from(value: Error) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for Error

Source§

fn from(value: Error) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

§

impl !RefUnwindSafe for Error

§

impl !UnwindSafe for Error

§

impl Freeze for Error

§

impl Send for Error

§

impl Sync for Error

§

impl Unpin for Error

§

impl UnsafeUnpin for Error

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.