This package implements a handler for swift-log which will send log messages to the Datadog's Log Management service.
Integrate the DataDogLog
package as a dependency with Swift Package Manager. Add the following to Package.swift
:
.package(url: "[email protected]:jagreenwood/swift-log-datadog.git", from: "0.0.1")
Add DataDogLog
to your target dependencies:
.product(name: "DataDogLog", package: "swift-log-datadog")
Configure the logger by bootstrapping a DataDogLogHandler
instance.
import DataDogLog
// add handler to logging system
LoggingSystem.bootstrap {
// initialize handler instance
var handler = DataDogLogHandler(label: $0, key: "xxx", hostname: "hostname")
// global metadata (optional)
handler.metadata = ["foo":"bar"]
return handler
}
To send logs to Datadog, initialize a Logger
instance and send a message with optional additional metadata:
import DataDogLog
let logger = Logger(label: "com.swift-log.awesome-app")
logger.error("unfortunate error", metadata: ["request-id": "abc-123"])
This call will send the following payload to Datadog:
{
"message": "2020-05-27T06:37:17-0400 ERROR: unfortunate error",
"hostname": "hostname",
"ddsource": "com.swift-log.awesome-app",
"ddtags": "callsite:testLog():39,foo:bar,request-id:abc-123",
"status": "error"
}
The Datadog API uses a different URL in the EU region compared to the US. If your account was created using Datadog EU, you need to set the region
option when initializing DataDogLogHandler
:
DataDogLogHandler(label: $0, key: "xxx", hostname: "hostname", region: .EU)