#[non_exhaustive]pub struct Metadata<'a> {
pub level: Level,
pub target: &'a str,
pub file: Option<&'a str>,
pub line: Option<u32>,
pub timestamp_unix_nanos: Option<u128>,
}Expand description
Metadata describing the origin and severity of a record.
level and target are required; the rest is best-effort context.
The logging macros populate file and line automatically and the
crate::Logger fills in timestamp_unix_nanos when timestamps
are enabled.
The struct is #[non_exhaustive] so new metadata can be added in a
minor release. Build it with Metadata::new and the with_*
methods; every field stays publicly readable.
§Examples
use log_io::{Level, Metadata};
let meta = Metadata::new(Level::Warn, "app::db")
.with_location("src/db.rs", 42)
.with_timestamp(1_700_000_000_000_000_000);
assert_eq!(meta.target, "app::db");
assert_eq!(meta.line, Some(42));Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.level: LevelSeverity of the record.
target: &'a strLogical target. Typically the module path, but callers are free to use a domain-specific identifier for filtering.
file: Option<&'a str>Source file path, if known.
line: Option<u32>Source line number, if known.
timestamp_unix_nanos: Option<u128>Nanoseconds since the Unix epoch, if known. Populated by the
logger when std is available and timestamps are enabled. None
means the consumer should supply its own clock (typical in
no_std builds).
Implementations§
Source§impl<'a> Metadata<'a>
impl<'a> Metadata<'a>
Sourcepub const fn new(level: Level, target: &'a str) -> Self
pub const fn new(level: Level, target: &'a str) -> Self
Build minimal metadata containing only level and target.
All optional fields are None.
Sourcepub const fn with_location(self, file: &'a str, line: u32) -> Self
pub const fn with_location(self, file: &'a str, line: u32) -> Self
Replace the source location.
Sourcepub const fn with_timestamp(self, ts_unix_nanos: u128) -> Self
pub const fn with_timestamp(self, ts_unix_nanos: u128) -> Self
Replace the timestamp (nanoseconds since the Unix epoch).