pub struct DittoLogger(/* private fields */);
Expand description

Type with free associated functions (“static methods”) to customize the logging behavior from Ditto and log messages with the Ditto logging infrastructure.

Implementations§

source§

impl DittoLogger

source

pub fn set_logging_enabled(enabled: bool)

Enable or disable logging.

Logs exported through [export_to_file] are not affected by this setting and will also include logs emitted while enabled is false.

source

pub fn get_logging_enabled() -> bool

Return true if logging is enabled.

Logs exported through [export_to_file] are not affected by this setting and will also include logs emitted while enabled is false.

source

pub fn get_emoji_log_level_headings_enabled() -> bool

Represent whether or not emojis should be used as the log level indicator in the logs.

source

pub fn set_emoji_log_level_headings_enabled(enabled: bool)

Set whether or not emojis should be used as the log level indicator in the logs.

source

pub fn get_minimum_log_level() -> LogLevel

Get the current minimum log level.

Logs exported through [export_to_file] are not affected by this setting and include all logs at LogLevel::Warning and above.

source

pub fn set_minimum_log_level(log_level: LogLevel)

Set the current minimum log level.

Logs exported through [export_to_file] are not affected by this setting and include all logs at LogLevel::Warning and above.

source§

impl DittoLogger

source

pub async fn export_to_file( file_path: &(impl ?Sized + AsRef<Path>) ) -> Result<u64>

Exports collected logs to a compressed and JSON-encoded file on the local file system.

DittoLogger locally collects a limited amount of logs at the LogLevel::Debug level and above, periodically discarding old logs. The internal logger is always enabled and workds independently of the enabled setting and the configured minimum_log_level. Its logs can be requested and downloaded from any peer that is active in a Ditto app using the portal’s device dashboard. This method provides an alternative way of accessing those logs by exporting them to the local filesystem.

The logs will be written as a gzip compressed file at the URL specified by the file_path parameter. When uncompressed, the file contains one JSON value per line with the oldest entry on the first line (JSON lines format).

Ditto limits the amount of logs it retains on disk to 15 MB and a maximum age of three days. Older logs are periodically discarded once one of these limits is reached.

This method currently only exports logs from the most recently created Ditto instance, even when multiple instances are running in the same process.

This method currently only exports logs from the most recently created Ditto instance when multiple instances are running in the same process.

Example
use ::dittolive_ditto::{
    error::{CoreApiErrorKind, ErrorKind},
    prelude::*,
};

let ditto: Ditto = /* construct at least one ditto instance first */
match DittoLogger::export_to_file("/some/path.jsonl.gz").await {
    Ok(_bytes_written) => { /* … */ },
    Err(err) => match err.kind() {
        ErrorKind::CoreApi(CoreApiErrorKind::IoNotFound) => { /* … */ },
        ErrorKind::CoreApi(CoreApiErrorKind::IoPermissionDenied) => { /* … */ },
        ErrorKind::CoreApi(CoreApiErrorKind::IoAlreadyExists) => { /* … */ },
        ErrorKind::CoreApi(CoreApiErrorKind::IoOperationFailed) => { /* … */ },
        _ => error!("{err}"),
    },
}

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
§

impl<T> CompatExt for T

§

fn compat(self) -> Compat<T>

Applies the [Compat] adapter by value. Read more
§

fn compat_ref(&self) -> Compat<&T>

Applies the [Compat] adapter by shared reference. Read more
§

fn compat_mut(&mut self) -> Compat<&mut T>

Applies the [Compat] adapter by mutable reference. Read more
§

impl<T> FitForCBox for T

§

type CBoxWrapped = Box_<T>

source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

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

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

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.

§

impl<T> ManuallyDropMut for T

§

type Ret = ManuallyDrop<T>

§

fn manually_drop_mut<'__>(&'__ mut self) -> &'__ mut ManuallyDrop<T>

§

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

§

fn to<T>(self) -> T
where Self: Into<T>,

Converts to T by calling Into<T>::into.
§

fn try_to<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Tries to convert to T by calling TryInto<T>::try_into.
source§

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

§

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>,

§

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.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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

impl<F> ZeroSizedElseWrathOfTheGඞds for F