pub struct SessionLogger { /* private fields */ }Expand description
Session-aware logger that wraps tracing spans
Creates a tracing span with session context fields and provides convenient methods for logging with session information.
Implementations§
Source§impl SessionLogger
impl SessionLogger
Sourcepub fn new(context: SessionContext) -> Self
pub fn new(context: SessionContext) -> Self
Create a new session logger
This creates a tracing span at INFO level with all session context fields.
§Arguments
context- The session context
§Example
use rusmes_server::session_logging::{SessionContext, SessionLogger};
use std::net::IpAddr;
let session = SessionContext::new(
IpAddr::from([127, 0, 0, 1]),
"IMAP",
);
let logger = SessionLogger::new(session);Sourcepub fn enter(&self) -> Entered<'_>
pub fn enter(&self) -> Entered<'_>
Enter the session span
Returns a guard that will exit the span when dropped. All logging done while the guard is held will include session context.
§Example
use rusmes_server::session_logging::{SessionContext, SessionLogger};
use std::net::IpAddr;
let session = SessionContext::new(
IpAddr::from([127, 0, 0, 1]),
"POP3",
);
let logger = SessionLogger::new(session);
let _guard = logger.enter();
tracing::info!("This log will include session context");Sourcepub fn context(&self) -> &SessionContext
pub fn context(&self) -> &SessionContext
Get the session context
Sourcepub fn set_username(&mut self, username: impl Into<String>)
pub fn set_username(&mut self, username: impl Into<String>)
Update the session context with a username
This creates a new span with the updated username field.
§Arguments
username- The authenticated username
Trait Implementations§
Auto Trait Implementations§
impl Freeze for SessionLogger
impl !RefUnwindSafe for SessionLogger
impl Send for SessionLogger
impl Sync for SessionLogger
impl Unpin for SessionLogger
impl UnsafeUnpin for SessionLogger
impl !UnwindSafe for SessionLogger
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
Mutably borrows from an owned value. Read more
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request