#logging #macos #apple #log

oslog

A minimal safe wrapper around Apple's Logging system

6 releases

0.2.0 Feb 17, 2022
0.1.0 Feb 16, 2021
0.0.4 Feb 16, 2021
0.0.3 Jun 19, 2020
0.0.1 May 14, 2020

#38 in macOS and iOS APIs

Download history 14860/week @ 2024-01-14 12491/week @ 2024-01-21 10952/week @ 2024-01-28 13036/week @ 2024-02-04 11999/week @ 2024-02-11 9775/week @ 2024-02-18 9741/week @ 2024-02-25 10204/week @ 2024-03-03 5920/week @ 2024-03-10 7027/week @ 2024-03-17 6833/week @ 2024-03-24 9045/week @ 2024-03-31 13718/week @ 2024-04-07 11292/week @ 2024-04-14 10424/week @ 2024-04-21 9583/week @ 2024-04-28

46,040 downloads per month
Used in 6 crates (5 directly)

MIT license

16KB
354 lines

Crate

A minimal wrapper around Apple's unified logging system.

By default support for the log crate is provided, but if you would prefer just to use the lower level bindings you can disable the default features.

When making use of targets (info!(target: "t", "m");), you should be aware that a new log is allocated and stored in a map for the lifetime of the program. I expect log allocations are extremely small, but haven't attempted to verify it.

Logging example

This is behind the logger feature flag and is enabled by default.

fn main() {
    OsLogger::new("com.example.test")
        .level_filter(LevelFilter::Debug)
        .category_level_filter("Settings", LevelFilter::Trace)
        .init()
        .unwrap();

    // Maps to OS_LOG_TYPE_DEBUG
    trace!(target: "Settings", "Trace");

    // Maps to OS_LOG_TYPE_INFO
    debug!("Debug");

    // Maps to OS_LOG_TYPE_DEFAULT
    info!(target: "Parsing", "Info");

    // Maps to OS_LOG_TYPE_ERROR
    warn!("Warn");

    // Maps to OS_LOG_TYPE_FAULT
    error!("Error");
}

Missing features

  • Activities
  • Tracing
  • Native support for line numbers and file names.

Dependencies

~0–5.5MB