DataDogでログを出す🐶
はじめに
ServerSideSwiftでDataDogを使うことになりdd-sdk-iosを使ってログを送れるのかを無料トライアルに登録して検証をしたんですが、思ったよりハマって時間取られたのでまとめます。
必要な手順は以下の3つです、エージェントのインストールと起動についてはすんなりいけると思うので2,3の手順の詳細をまとめます。
- DataDog Agentのインストール -> エージェントの起動
- DataDog.yamlの書き換え
- コードの実装
DataDog.yamlの書き換え
ログを送るにはまずdatadog.yamlファイルを書き換える必要があります、Agentを入れたらdatadog.yamlの中身を書き換えろとドキュメント(ホスト Agent ログの収集)にあったんですが、そもそもdatadog.yamlがどこにあるのかわからなかったのでfindコマンドで探したところ僕の場合は以下のpathにありました /Users/harumidiv/.datadog-agent/datadog.yaml
find ~ -name "datadog.yaml"
yamlを書き換えるということもログ実装ドキュメントと分かれてて見つけるのに時間かかりました…リンク貼っておいてほしい🐶
変更自体は以下のようにlogs_enabledをtrueにするだけでOKです
# logs_enabled: false
↓
logs_enabled: true
コード
無料トライアル版での検証コードなのでappIDやclientTokenもそのまま乗っけてしまっていますが、こちらはアカウントに紐付いているのでDataDogのサイト上で確認して任意の値に変更する必要があります。
environmentの値はログをDataDogのコンソール上で絞り込むもののようなので任意の値で良さそうです。
import SwiftUI
import DatadogCore
import DatadogLogs
struct ContentView: View {
let appID = "ee4cefb0-05ec-408b-bb1c-d772d653bf49"
let clientToken = "pubdbbc19a0710b42ab03954a59564db05e"
let environment = "dev"
var logger: LoggerProtocol
var body: some View {
Button {
logger.debug("A debug message.😺")
logger.info("Some relevant information?😺")
logger.notice("Have you noticed?😺")
logger.warn("An important warning…😺")
logger.error("An error was met!😺")
logger.critical("Something critical happened!😺")
} label: {
VStack {
Image(systemName: "globe")
.imageScale(.large)
.foregroundStyle(.tint)
Text("Hello, world!")
}
.padding()
}
}
init() {
Datadog.initialize(
with: Datadog.Configuration(
clientToken: clientToken,
env: environment,
site: .ap1
),
trackingConsent: .granted
)
Logs.enable()
logger = Logger.create(
with: Logger.Configuration(
service: "DDogSample2",
name: "Analytics",
networkInfoEnabled: true,
remoteSampleRate: 100,
consoleLogFormat: .shortWith(prefix: "[iOS App] ")
)
)
Datadog.verbosityLevel = .debug
}
}
💡つまずきポイント
注意点としてはログを有効にするタイミングをLogger作成時よりも前にすることです!!
この部分に気づかずかなりハマってしまいissueで質問までしました..
Logs are not sent on the DataDog site #2078
Xcode上のログ
Datadog.verbosityLevel = .debug
↑を入れておくと正しくログを送信できた時にxcodeのコンソール上にもログが吐き出されます

DataDogのLog Exproler
