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: "git@github.com:jagreenwood/swift-log-datadog.git", from: "1.0.0")
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"], source: "module-name")
This call will send the following payload to Datadog:
{
"message": "2020-05-27T06:37:17-0400 ERROR: unfortunate error",
"hostname": "hostname",
"ddsource": "module-name",
"ddtags": "callsite:testLog():39,foo:bar,request-id:abc-123",
"status": "error"
"service": "com.swift-log.awesome-app"
}
The Datadog API runs on multiple regions (e.g. US, EU, US3, US5, US1FED), with different API endpoints. If your account was not created in the default US region, you need to set the region
option when initializing DataDogLogHandler
:
DataDogLogHandler(label: $0, key: "xxx", hostname: "hostname", region: .EU)