pub struct QueuedSyslog<S = DefaultQueueAdapter, F = DefaultSyslogFormatter, D = SyslogLocal>{ /* private fields */ }
Expand description
A parallel, shared instance of the syslog client which is running in the separate thread and uses a crossbeam channel to receive the messages from the program. It is also capable to combine sync and async i.e sync code and async code is writing to the same syslog connection.
For this isntance a SyslogApi and SyStreamApi are implemented.
Also if async
is enabled, a [AsyncSyslogQueueApi] is implemented.
let log =
QueuedSyslog::openlog(
Some("test1"),
LogStat::LOG_CONS | LogStat::LOG_NDELAY | LogStat::LOG_PID,
LogFacility::LOG_DAEMON,
SyslogLocal::new()
);
let log =
QueuedSyslog
::<DefaultQueueAdapter, DefaultSyslogFormatter, SyslogLocal>
::openlog_with(
Some("test1"),
LogStat::LOG_CONS | LogStat::LOG_NDELAY | LogStat::LOG_PID,
LogFacility::LOG_DAEMON,
SyslogLocal::new()
);
pub static SYSLOG3: LazyLock<SyncSyslog<DefaultSyslogFormatter, SyslogLocal,>> =
LazyLock::new(||
{
QueuedSyslog
::<DefaultQueueAdapter, DefaultSyslogFormatter, SyslogLocal>
::openlog_with(
Some("test1"),
LogStat::LOG_CONS | LogStat::LOG_NDELAY | LogStat::LOG_PID,
LogFacility::LOG_DAEMON,
SyslogLocal::new()
)
.unwrap()
}
);
A stream is availble via SyStreamApi.
let _ = write!(SYSLOG.stream(Priority::LOG_DEBUG), "test {} 123 stream test ", d);
§Generics
-
S
- a SyslogQueueChannel a MPSC provider. -
F
- a SyslogFormatter which sets the instance which would format the message. -
D
- a SyslogDestination instance which is either: SyslogLocal, [SyslogFile], [SyslogNet], [SyslogTls]. By default aSyslogLocal
is selected.
Implementations§
Source§impl QueuedSyslog
impl QueuedSyslog
Sourcepub fn openlog(
ident: Option<&str>,
logstat: LogStat,
facility: LogFacility,
net_tap_prov: SyslogLocal,
) -> SyRes<Self>
pub fn openlog( ident: Option<&str>, logstat: LogStat, facility: LogFacility, net_tap_prov: SyslogLocal, ) -> SyRes<Self>
Opens a default connection to the local syslog server with default formatter with formatter SyslogFormatter and destination SyslogLocal.
§Arguments
-
ident
- A program name which will appear on the logs. If none, will be determined automatically. -
logstat
- LogStat an instance config. -
facility
- LogFacility a syslog facility. -
net_tap_prov
- a SyslogLocal instance with configuration.
§Returns
A SyRes is returned (Result) with:
-
Result::Ok - with instance
-
Result::Err - with error description.
Source§impl<F, D, S> QueuedSyslog<S, F, D>
impl<F, D, S> QueuedSyslog<S, F, D>
Sourcepub fn openlog_with(
ident: Option<&str>,
logstat: LogStat,
facility: LogFacility,
net_tap_prov: D,
) -> SyRes<QueuedSyslog<S, F, D>>
pub fn openlog_with( ident: Option<&str>, logstat: LogStat, facility: LogFacility, net_tap_prov: D, ) -> SyRes<QueuedSyslog<S, F, D>>
Opens a default connection to the local syslog server with default formatter with provided generics.
§Arguments
-
ident
- A program name which will appear on the logs. If none, will be determined automatically. -
logstat
- LogStat an instance config. -
facility
- LogFacility a syslog facility. -
net_tap_prov
- a SyslogLocal instance with configuration.
§Returns
A SyRes is returned (Result) with:
-
Result::Ok - with instance
-
Result::Err - with error description.
Trait Implementations§
Source§impl<F: SyslogFormatter, D: SyslogDestination, S: SyslogQueueChannel<F, D>> AsyncSyslogQueueApi<F, D> for QueuedSyslog<S, F, D>
impl<F: SyslogFormatter, D: SyslogDestination, S: SyslogQueueChannel<F, D>> AsyncSyslogQueueApi<F, D> for QueuedSyslog<S, F, D>
Source§async fn a_setlogmask(&self, logmask: i32) -> SyRes<i32>
async fn a_setlogmask(&self, logmask: i32) -> SyRes<i32>
Sets the logmask to filter out the syslog calls. This function behaves differently as it behaves in syslog_sync.rs or syslog_async.rs. It may return an error if: syslog thread had exit and some thread calls this function. Or something happened with channel. This function blocks until the previous mask is received.
See macroses [LOG_MASK] and [LOG_UPTO] to generate mask
§Example
LOG_MASK!(Priority::LOG_EMERG) | LOG_MASK!(Priority::LOG_ERROR)
or
~(LOG_MASK!(Priority::LOG_INFO)) LOG_UPTO!(Priority::LOG_ERROR)
Source§async fn a_closelog(&self) -> SyRes<()>
async fn a_closelog(&self) -> SyRes<()>
Closes connection to the syslog server
Source§async fn a_syslog(&self, pri: Priority, fmt: F)
async fn a_syslog(&self, pri: Priority, fmt: F)
Similar to libc, syslog() sends data to syslog server, but asynchroniously.
§Arguments
-
pri
- a priority Priority -
fmt
- a program’s message to be sent as payload. The message is encoded with the SyslogFormatter and may be different for different formatters.
Source§async fn a_reconnect(&self) -> SyRes<()>
async fn a_reconnect(&self) -> SyRes<()>
Performs the reconnection to the syslog server or file re-open.
§Returns
-
Result::Ok - with empty inner type.
-
Result::Err - an error code and description
Source§async fn a_update_tap_data(&self, new_tap: D) -> SyRes<()>
async fn a_update_tap_data(&self, new_tap: D) -> SyRes<()>
Updates the inner instance destionation i.e path to file or server address. The type of destination can not be changed.
This function disconnects from syslog server if previously was connected (and reconnects if was connected previously).
§Arguments
new_tap
- a consumed instance of typeD
SyslogDestination
§Returns
A SyRes is returned. An error may be returned if:
-
connection to server was failed
-
incorrect type
-
disconnect frm server failed
Source§async fn a_connectlog(&mut self) -> SyRes<()>
async fn a_connectlog(&mut self) -> SyRes<()>
Source§impl<S, F, D> Clone for QueuedSyslog<S, F, D>where
F: SyslogFormatter + Clone,
D: SyslogDestination + Clone,
S: SyslogQueueChannel<F, D> + Clone,
S::ChannelSnd: Clone,
impl<S, F, D> Clone for QueuedSyslog<S, F, D>where
F: SyslogFormatter + Clone,
D: SyslogDestination + Clone,
S: SyslogQueueChannel<F, D> + Clone,
S::ChannelSnd: Clone,
Source§fn clone(&self) -> QueuedSyslog<S, F, D>
fn clone(&self) -> QueuedSyslog<S, F, D>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl<S, F, D> Debug for QueuedSyslog<S, F, D>where
F: SyslogFormatter + Debug,
D: SyslogDestination + Debug,
S: SyslogQueueChannel<F, D> + Debug,
S::ChannelSnd: Debug,
impl<S, F, D> Debug for QueuedSyslog<S, F, D>where
F: SyslogFormatter + Debug,
D: SyslogDestination + Debug,
S: SyslogQueueChannel<F, D> + Debug,
S::ChannelSnd: Debug,
Source§impl<F, D, S> Drop for QueuedSyslog<S, F, D>
impl<F, D, S> Drop for QueuedSyslog<S, F, D>
Source§impl<'stream, F: SyslogFormatter, D: SyslogDestination, S: SyslogQueueChannel<F, D>> SyStreamApi<'stream, F, D, QueuedSyslog<S, F, D>> for QueuedSyslog<S, F, D>
impl<'stream, F: SyslogFormatter, D: SyslogDestination, S: SyslogQueueChannel<F, D>> SyStreamApi<'stream, F, D, QueuedSyslog<S, F, D>> for QueuedSyslog<S, F, D>
Source§impl<F: SyslogFormatter, D: SyslogDestination, S: SyslogQueueChannel<F, D>> SyslogApi<F, D> for QueuedSyslog<S, F, D>
impl<F: SyslogFormatter, D: SyslogDestination, S: SyslogQueueChannel<F, D>> SyslogApi<F, D> for QueuedSyslog<S, F, D>
Source§fn connectlog(&self) -> SyRes<()>
fn connectlog(&self) -> SyRes<()>
Source§fn setlogmask(&self, logmask: i32) -> SyRes<i32>
fn setlogmask(&self, logmask: i32) -> SyRes<i32>
Source§fn syslog(&self, pri: Priority, fmt: F)
fn syslog(&self, pri: Priority, fmt: F)
Source§fn change_identity(&self, ident: Option<&str>) -> SyRes<()>
fn change_identity(&self, ident: Option<&str>) -> SyRes<()>
Source§fn reconnect(&self) -> SyRes<()>
fn reconnect(&self) -> SyRes<()>
Source§fn update_tap_data(&self, tap_data: D) -> SyRes<()>
fn update_tap_data(&self, tap_data: D) -> SyRes<()>
tap_data
[TapTypeData] should be of
the same variant (type) as current.