Occurrence

0.6.0

A swift logging library that integrates with `SwiftLog`
richardpiazza/Occurrence

What's New

Occurrence 0.6.0

2024-01-28T15:37:03Z

This release focuses on the introduction of the LoggableError protocol. LoggableErrors are designed to be easily converted to Logger.Metadata for writing the details of an error to the log. Conveniences are created to easily pass-through errors and reconstruct NSErrors from log entry metadata.

What's Changed

Full Changelog: 0.5.0...0.6.0

Occurrence

A swift logging library that integrates with SwiftLog.

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.6.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
    }
}

Conveniences

Occurrence has many conveniences to enhance the overall logging experience.

The LoggableError protocol provides a way to easily convert errors to a Logger.Metadata representation. There are also extensions to the Logger instance that allow for passthrough of a LoggableError instance:

@LazyLogger("MyApp") var logger: Logger

enum AppError: LoggableError {
  case badData
}

func throwingFunction() throws {
  guard condition else {
    throw logger.error("Condition not met.", AppError.badData)
  }
}

Description

  • Swift Tools 5.5.0
View More Packages from this Author

Dependencies

Last updated: Tue Apr 23 2024 04:25:35 GMT-0900 (Hawaii-Aleutian Daylight Time)