---
title: getsentry/sentry-apple-cocoalumberjack
framework: Swift Package Catalog
role: article
path: packages/getsentry/sentry-apple-cocoalumberjack
---

# getsentry/sentry-apple-cocoalumberjack

A [CocoaLumberjack](https://github.com/CocoaLumberjack/CocoaLumberjack) logger that forwards log entries to Sentry's structured logging system, automatically capturing application logs with full context including source location, thread information, and log levels.

## Installation

### Swift Package Manager

Add the following dependencies to your `Package.swift` or Xcode package dependencies:

```swift dependencies: [     .package(url: "https://github.com/getsentry/sentry-apple-cocoalumberjack", from: "9.0.0") ] ```

Then add the `SentryCocoaLumberjack` product to your target:

```swift .target(     name: "MyApp",     dependencies: [         .product(name: "SentryCocoaLumberjack", package: "sentry-apple-cocoalumberjack")     ] ) ```

## Quick Start

```swift import Sentry import SentryCocoaLumberjack import CocoaLumberjackSwift

SentrySDK.start { options in     options.dsn = "YOUR_DSN" }

DDLog.add(SentryCocoaLumberjackLogger(), with: .info)

DDLogInfo("User logged in") DDLogError("Payment failed") DDLogWarn("API rate limit approaching") DDLogDebug("Processing request") DDLogVerbose("Detailed trace information") ```

## Configuration

### Log Level Threshold

Use CocoaLumberjack's built-in filtering API when adding the logger to set the minimum log level for messages to be sent to Sentry:

```swift // Only send error logs to Sentry DDLog.add(SentryCocoaLumberjackLogger(), with: .error) ```

## Log Level Mapping

CocoaLumberjack log levels are automatically mapped to Sentry log levels:

| CocoaLumberjack Level | Sentry Log Level | | --------------------- | ---------------- | | `.error`              | `.error`         | | `.warning`            | `.warn`          | | `.info`               | `.info`          | | `.debug`              | `.debug`         | | `.verbose`            | `.trace`         |

## Automatic Attributes

The logger automatically includes the following attributes with every log entry:

- `sentry.origin`: `"auto.logging.cocoalumberjack"` - `cocoalumberjack.level`: The original CocoaLumberjack log level (error, warning, info, debug, verbose) - `code.file.path`: The source file name - `code.function.name`: The function name - `code.line.number`: The line number - `cocoalumberjack.context`: The log context (integer) - `cocoalumberjack.timestamp`: The log timestamp - `cocoalumberjack.threadID`: The thread ID - `cocoalumberjack.threadName`: The thread name (if available) - `cocoalumberjack.queueLabel`: The dispatch queue label (if available)

## Documentation

- [Sentry Cocoa SDK Documentation](https://docs.sentry.io/platforms/apple/) - [Sentry Logs Documentation](https://docs.sentry.io/platforms/apple/logs/) - [CocoaLumberjack Repo](https://github.com/CocoaLumberjack/CocoaLumberjack)

## License

This integration follows the same license as the Sentry Cocoa SDK. See the [LICENSE](https://github.com/getsentry/sentry-cocoa/blob/main/LICENSE.md) file for details.

## Package Metadata

Repository: getsentry/sentry-apple-cocoalumberjack

Default branch: main

README: README.md
