Skip to main content

LoggingGuard

Struct LoggingGuard 

Source
pub struct LoggingGuard { /* private fields */ }
Expand description

Holds resources that must outlive the logging system.

Critical: This guard owns the WorkerGuard for the non-blocking HFT file appender. If dropped, the background writer thread stops and any buffered log entries are lost.

Always bind this to a named variable in main():

let _guard = init_logging(config)?;

Implementations§

Source§

impl LoggingGuard

Source

pub fn ops_reload_handle(&self) -> Option<&Handle<EnvFilter, Registry>>

Get a reference to the reload handle for the operational (stdout) layer’s EnvFilter.

Returns None if the stdout layer was not installed with a reload handle (shouldn’t happen in normal operation).

§Example
if let Some(handle) = guard.ops_reload_handle() {
    let new_filter = EnvFilter::new("debug,hyper=info");
    handle.reload(new_filter).expect("reload failed");
    tracing::info!("Log level changed to debug at runtime");
}
Source

pub fn set_log_level(&self, filter_str: &str) -> Result<()>

Reload the operational log filter at runtime.

Accepts any string that EnvFilter can parse, e.g.:

  • "debug"
  • "info,janus=trace"
  • "warn,janus::supervisor=debug"

Returns an error if the filter string is invalid or if the reload handle is missing.

Source

pub fn create_controller(&self) -> Option<Box<dyn LogLevelController>>

Create a LogLevelController that can be installed into JanusState for the API to change log levels at runtime.

The returned controller shares the same reload handle as this guard — it does not take ownership of the guard, so the guard must still be held alive in main().

Returns None if no reload handle is available (shouldn’t happen in normal operation).

§Example
let guard = init_logging(config)?;
if let Some(ctrl) = guard.create_controller() {
    state.set_log_level_controller(ctrl).await;
}

Trait Implementations§

Source§

impl Debug for LoggingGuard

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more