Struct syslog_tracing::Syslog
source · pub struct Syslog { /* private fields */ }
Expand description
MakeWriter
that logs to syslog
via libc
’s syslog()
function.
§Level Mapping
tracing
Level
s are mapped to syslog
severities as follows:
Level::ERROR => Severity::LOG_ERR,
Level::WARN => Severity::LOG_WARNING,
Level::INFO => Severity::LOG_NOTICE,
Level::DEBUG => Severity::LOG_INFO,
Level::TRACE => Severity::LOG_DEBUG,
Note: the mapping is lossless, but the corresponding syslog
severity
names differ from tracing
’s level names towards the bottom. syslog
does not have a level lower than LOG_DEBUG
, so this is unavoidable.
§Examples
Initializing a global logger that writes to syslog
with an identity of example-program
and the default syslog
options and facility:
let identity = std::ffi::CStr::from_bytes_with_nul(b"example-program\0").unwrap();
let (options, facility) = Default::default();
let syslog = syslog_tracing::Syslog::new(identity, options, facility).unwrap();
tracing_subscriber::fmt().with_writer(syslog).init();
Implementations§
source§impl Syslog
impl Syslog
sourcepub fn new(
identity: impl Into<Cow<'static, CStr>>,
options: Options,
facility: Facility
) -> Option<Self>
pub fn new( identity: impl Into<Cow<'static, CStr>>, options: Options, facility: Facility ) -> Option<Self>
Creates a [tracing
] MakeWriter
that writes to syslog
.
This calls libc::openlog()
to initialize the logger. The corresponding
libc::closelog()
call happens when the returned logger is dropped.
If a logger already exists, returns None
.
§Examples
Creating a syslog
MakeWriter
with an identity of example-program
and
the default syslog
options and facility:
use syslog_tracing::Syslog;
let identity = std::ffi::CStr::from_bytes_with_nul(b"example-program\0").unwrap();
let (options, facility) = Default::default();
let syslog = Syslog::new(identity, options, facility).unwrap();
Two loggers cannot coexist, since libc::syslog()
writes to a global logger:
let syslog = Syslog::new(identity, options, facility).unwrap();
assert!(Syslog::new(identity, options, facility).is_none());
sourcepub fn invalid_chars(self, cfg: InvalidCharAction) -> Self
pub fn invalid_chars(self, cfg: InvalidCharAction) -> Self
Set the action to take when a message cannot be logged as is because it contains invalid characters.
Trait Implementations§
source§impl<'a> MakeWriter<'a> for Syslog
impl<'a> MakeWriter<'a> for Syslog
§type Writer = SyslogWriter
type Writer = SyslogWriter
io::Write
implementation returned by make_writer
.Auto Trait Implementations§
impl Freeze for Syslog
impl RefUnwindSafe for Syslog
impl Send for Syslog
impl Sync for Syslog
impl Unpin for Syslog
impl UnwindSafe for Syslog
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<'a, M> MakeWriterExt<'a> for Mwhere
M: MakeWriter<'a>,
impl<'a, M> MakeWriterExt<'a> for Mwhere
M: MakeWriter<'a>,
source§fn with_max_level(self, level: Level) -> WithMaxLevel<Self>where
Self: Sized,
fn with_max_level(self, level: Level) -> WithMaxLevel<Self>where
Self: Sized,
self
and returns a MakeWriter
that will only write output
for events at or below the provided verbosity Level
. For instance,
Level::TRACE
is considered to be _more verbosethan
Level::INFO`. Read moresource§fn with_min_level(self, level: Level) -> WithMinLevel<Self>where
Self: Sized,
fn with_min_level(self, level: Level) -> WithMinLevel<Self>where
Self: Sized,
self
and returns a MakeWriter
that will only write output
for events at or above the provided verbosity Level
. Read moresource§fn with_filter<F>(self, filter: F) -> WithFilter<Self, F>
fn with_filter<F>(self, filter: F) -> WithFilter<Self, F>
self
with a predicate that takes a span or event’s Metadata
and returns a bool
. The returned MakeWriter
’s
MakeWriter::make_writer_for
method will check the predicate to
determine if a writer should be produced for a given span or event. Read moresource§fn and<B>(self, other: B) -> Tee<Self, B>where
Self: Sized,
B: MakeWriter<'a>,
fn and<B>(self, other: B) -> Tee<Self, B>where
Self: Sized,
B: MakeWriter<'a>,
self
with another type implementing MakeWriter
, returning
a new MakeWriter
that produces writers that write to both
outputs. Read moresource§fn or_else<W, B>(self, other: B) -> OrElse<Self, B>
fn or_else<W, B>(self, other: B) -> OrElse<Self, B>
self
with another type implementing MakeWriter
, returning
a new MakeWriter
that calls other
’s make_writer
if self
’s
make_writer
returns OptionalWriter::none
. Read more