Swiftpack.co - richardpiazza/Occurrence as Swift Package

Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
See all packages published by richardpiazza.
richardpiazza/Occurrence 0.5.0
A swift logging library that integrates with `SwiftLog`
⭐️ 0
🕓 3 weeks ago
iOS macOS watchOS tvOS macCatalyst
.package(url: "https://github.com/richardpiazza/Occurrence.git", from: "0.5.0")

Occurrence

A swift logging library that integrates with SwiftLog.

Twitter: @richardpiazza

Installation

Occurrence is distributed using the Swift Package Manager. To install it into a project, Use the Xcode 'Swift Packages' menu or add it as a dependency within your Package.swift manifest:

let package = Package(
    ...
    dependencies: [
        .package(url: "https://github.com/richardpiazza/Occurence.git", .upToNextMinor(from: "0.5.0"))
    ],
    ...
)

Then import the Occurrence packages wherever you'd like to use it:

import Occurrence

Usage

During you app initialization, call Occurrence.bootstrap(). This will configure the Swift LoggingSystem to use Occurrence as a LogHandler.

As a convenience to creating a Logger reference, use the LazyLogger property wrapper which will create a Logger with the specific label (Logger.Subsystem).

@LazyLogger("LoggerLabel") var logger: Logger

Occurrence also offers the ability to observe logging events as they are happening. This can also be useful in the case where entries may need to be proxied to a third-party service.

// Combine
Occurrence.logStreamer
    .publisher
    .sink { entry in
        // process entry
    }

// async/await
let task = Task {
    for await entry in Occurrence.logStreamer.stream {
        // process entry
    }
}

GitHub

link
Stars: 0
Last commit: 3 weeks ago
jonrohan Something's broken? Yell at me @ptrpavlik. Praise and feedback (and money) is also welcome.

Related Packages

Release Notes

Occurrence 0.5.0
3 weeks ago

Introduces an AsyncStream option to observe log entries:

let task = Task {
    for await entry in Occurrence.logStreamer.stream {
        // process entry
    }
}

Also, a minor change to Log.Entry.description to make reading multiple log lines easier.

Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics