Struct Level
struct Level(_)
Describes the level of verbosity of a span or event.
Comparing Levels
Level implements the PartialOrd and Ord traits, allowing two
Levels to be compared to determine which is considered more or less
verbose. Levels which are more verbose are considered "greater than" levels
which are less verbose, with Level::ERROR considered the lowest, and
Level::TRACE considered the highest.
For example:
use Level;
assert!;
assert!;
assert!;
assert_eq!;
Filtering
Levels are typically used to implement filtering that determines which
spans and events are enabled. Depending on the use case, more or less
verbose diagnostics may be desired. For example, when running in
development, DEBUG-level traces may be enabled by default. When running in
production, only INFO-level and lower traces might be enabled. Libraries
may include very verbose diagnostics at the DEBUG and/or TRACE levels.
Applications using those libraries typically chose to ignore those traces. However, when
debugging an issue involving said libraries, it may be useful to temporarily
enable the more verbose traces.
The LevelFilter type is provided to enable filtering traces by
verbosity. Levels can be compared against LevelFilters, and
LevelFilter has a variant for each Level, which compares analogously
to that level. In addition, LevelFilter adds a LevelFilter::OFF
variant, which is considered "less verbose" than every other Level. This is
intended to allow filters to completely disable tracing in a particular context.
For example:
use ;
assert!;
assert!;
assert!;
assert!;
assert!;
Examples
Below is a simple example of how a Subscriber could implement filtering through
a LevelFilter. When a span or event is recorded, the Subscriber::enabled method
compares the span or event's Level against the configured LevelFilter.
The optional Subscriber::max_level_hint method can also be implemented to allow spans
and events above a maximum verbosity level to be skipped more efficiently,
often improving performance in short-lived programs.
use ;
# use ;
It is worth noting that the tracing-subscriber crate provides additional
APIs for performing more sophisticated filtering, such as
enabling different levels based on which module or crate a span or event is
recorded in.
Implementations
impl Level
fn as_str(self: &Self) -> &'static strReturns the string representation of the
Level.This returns the same string as the
fmt::Displayimplementation.
impl Clone for Level
fn clone(self: &Self) -> Level
impl Copy for Level
impl Debug for Level
fn fmt(self: &Self, f: &mut Formatter<'_>) -> Result
impl Display for Level
fn fmt(self: &Self, f: &mut Formatter<'_>) -> Result
impl Eq for Level
impl Freeze for Level
impl FromStr for Level
fn from_str(s: &str) -> Result<Self, ParseLevelError>
impl Hash for Level
fn hash<__H: $crate::hash::Hasher>(self: &Self, state: &mut __H)
impl Ord for Level
fn cmp(self: &Self, other: &Self) -> Ordering
impl PartialEq for Level
fn eq(self: &Self, other: &Level) -> bool
impl PartialEq for Level
fn eq(self: &Self, other: &LevelFilter) -> bool
impl PartialOrd for Level
fn partial_cmp(self: &Self, other: &Level) -> Option<Ordering>fn lt(self: &Self, other: &Level) -> boolfn le(self: &Self, other: &Level) -> boolfn gt(self: &Self, other: &Level) -> boolfn ge(self: &Self, other: &Level) -> bool
impl PartialOrd for Level
fn partial_cmp(self: &Self, other: &LevelFilter) -> Option<Ordering>fn lt(self: &Self, other: &LevelFilter) -> boolfn le(self: &Self, other: &LevelFilter) -> boolfn gt(self: &Self, other: &LevelFilter) -> boolfn ge(self: &Self, other: &LevelFilter) -> bool
impl RefUnwindSafe for Level
impl Send for Level
impl StructuralPartialEq for Level
impl Sync for Level
impl Unpin for Level
impl UnsafeUnpin for Level
impl UnwindSafe for Level
impl<T> Any for Level
fn type_id(self: &Self) -> TypeId
impl<T> Borrow for Level
fn borrow(self: &Self) -> &T
impl<T> BorrowMut for Level
fn borrow_mut(self: &mut Self) -> &mut T
impl<T> CloneToUninit for Level
unsafe fn clone_to_uninit(self: &Self, dest: *mut u8)
impl<T> From for Level
fn from(t: T) -> TReturns the argument unchanged.
impl<T> ToOwned for Level
fn to_owned(self: &Self) -> Tfn clone_into(self: &Self, target: &mut T)
impl<T> ToString for Level
fn to_string(self: &Self) -> String
impl<T, U> Into for Level
fn into(self: Self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom for Level
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
impl<T, U> TryInto for Level
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error>