Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Ktor-powered REST Datadog module #122

Merged
merged 11 commits into from
Feb 11, 2025
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion bundled/src/androidMain/kotlin/DatadogInitializer.kt
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ private fun Site.toDatadogType(): DatadogSite = when (this) {
Site.US1 -> DatadogSite.US1
Site.US3 -> DatadogSite.US3
Site.US5 -> DatadogSite.US5
Site.EU1 -> DatadogSite.EU1
Site.AP1 -> DatadogSite.AP1
Site.EU -> DatadogSite.EU1
Site.US1_FED -> DatadogSite.US1_FED
}
3 changes: 2 additions & 1 deletion bundled/src/iosMain/kotlin/DatadogInitializer.kt
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,8 @@ private fun Site.toDatadogType(): DDSite = when (this) {
Site.US1 -> DDSite.us1()
Site.US3 -> DDSite.us3()
Site.US5 -> DDSite.us5()
Site.EU1 -> DDSite.eu1()
Site.AP1 -> DDSite.ap1()
Site.EU -> DDSite.eu1()
Site.US1_FED -> DDSite.us1_fed()
}

Expand Down
3 changes: 2 additions & 1 deletion bundled/src/jsMain/kotlin/DatadogInitializer.kt
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ private fun Site.toDatadogType(): String = when (this) {
Site.US1 -> "datadoghq.com"
Site.US3 -> "us3.datadoghq.com"
Site.US5 -> "us5.datadoghq.com"
Site.EU1 -> "datadoghq.eu"
Site.AP1 -> "ap1.datadoghq.com"
Site.EU -> "datadoghq.eu"
Site.US1_FED -> "ddog-gov.com"
}
58 changes: 58 additions & 0 deletions datadog-ktor/api/datadog-ktor.api
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
public final class com/juul/datadog/ktor/DatadogKtorConfiguration {
public fun <init> (Lcom/juul/datadog/ktor/RestConfiguration;Lcom/juul/datadog/ktor/LogConfiguration;)V
public synthetic fun <init> (Lcom/juul/datadog/ktor/RestConfiguration;Lcom/juul/datadog/ktor/LogConfiguration;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Lcom/juul/datadog/ktor/RestConfiguration;
public final fun component2 ()Lcom/juul/datadog/ktor/LogConfiguration;
public final fun copy (Lcom/juul/datadog/ktor/RestConfiguration;Lcom/juul/datadog/ktor/LogConfiguration;)Lcom/juul/datadog/ktor/DatadogKtorConfiguration;
public static synthetic fun copy$default (Lcom/juul/datadog/ktor/DatadogKtorConfiguration;Lcom/juul/datadog/ktor/RestConfiguration;Lcom/juul/datadog/ktor/LogConfiguration;ILjava/lang/Object;)Lcom/juul/datadog/ktor/DatadogKtorConfiguration;
public fun equals (Ljava/lang/Object;)Z
public final fun getLog ()Lcom/juul/datadog/ktor/LogConfiguration;
public final fun getRest ()Lcom/juul/datadog/ktor/RestConfiguration;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}

public final class com/juul/datadog/ktor/KtorDatadogLoggerKt {
public static final fun ktorDatadogLogger (Lcom/juul/datadog/ktor/DatadogKtorConfiguration;Lio/ktor/client/HttpClient;Lkotlinx/coroutines/CoroutineScope;)Lcom/juul/datadog/ktor/RestLogger;
}

public final class com/juul/datadog/ktor/LogConfiguration {
public fun <init> ()V
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ljava/lang/String;
public final fun component2 ()Ljava/lang/String;
public final fun component3 ()Ljava/lang/String;
public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/juul/datadog/ktor/LogConfiguration;
public static synthetic fun copy$default (Lcom/juul/datadog/ktor/LogConfiguration;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/juul/datadog/ktor/LogConfiguration;
public fun equals (Ljava/lang/Object;)Z
public final fun getHost ()Ljava/lang/String;
public final fun getService ()Ljava/lang/String;
public final fun getSource ()Ljava/lang/String;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}

public final class com/juul/datadog/ktor/RestConfiguration {
public fun <init> (Ljava/lang/String;Lcom/juul/datadog/Site;)V
public final fun component1 ()Ljava/lang/String;
public final fun component2 ()Lcom/juul/datadog/Site;
public final fun copy (Ljava/lang/String;Lcom/juul/datadog/Site;)Lcom/juul/datadog/ktor/RestConfiguration;
public static synthetic fun copy$default (Lcom/juul/datadog/ktor/RestConfiguration;Ljava/lang/String;Lcom/juul/datadog/Site;ILjava/lang/Object;)Lcom/juul/datadog/ktor/RestConfiguration;
public fun equals (Ljava/lang/Object;)Z
public final fun getApiKey ()Ljava/lang/String;
public final fun getSite ()Lcom/juul/datadog/Site;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}

public abstract interface class com/juul/datadog/ktor/RestLogger : com/juul/datadog/Logger, com/juul/datadog/TagHandler {
public abstract fun assert (Ljava/lang/String;Ljava/util/Map;Ljava/lang/Throwable;)V
public abstract fun verbose (Ljava/lang/String;Ljava/util/Map;Ljava/lang/Throwable;)V
}

public final class com/juul/datadog/ktor/RestLogger$DefaultImpls {
public static synthetic fun assert$default (Lcom/juul/datadog/ktor/RestLogger;Ljava/lang/String;Ljava/util/Map;Ljava/lang/Throwable;ILjava/lang/Object;)V
public static synthetic fun verbose$default (Lcom/juul/datadog/ktor/RestLogger;Ljava/lang/String;Ljava/util/Map;Ljava/lang/Throwable;ILjava/lang/Object;)V
}

160 changes: 160 additions & 0 deletions datadog-ktor/api/datadog.api
Original file line number Diff line number Diff line change
@@ -0,0 +1,160 @@
public final class com/juul/datadog/Configuration {
public fun <init> (Ljava/lang/String;Lcom/juul/datadog/Site;Ljava/lang/String;Ljava/lang/String;Lcom/juul/datadog/Configuration$Features;Lcom/juul/datadog/Configuration$UploadFrequency;)V
public synthetic fun <init> (Ljava/lang/String;Lcom/juul/datadog/Site;Ljava/lang/String;Ljava/lang/String;Lcom/juul/datadog/Configuration$Features;Lcom/juul/datadog/Configuration$UploadFrequency;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ljava/lang/String;
public final fun component2 ()Lcom/juul/datadog/Site;
public final fun component3 ()Ljava/lang/String;
public final fun component4 ()Ljava/lang/String;
public final fun component5 ()Lcom/juul/datadog/Configuration$Features;
public final fun component6 ()Lcom/juul/datadog/Configuration$UploadFrequency;
public final fun copy (Ljava/lang/String;Lcom/juul/datadog/Site;Ljava/lang/String;Ljava/lang/String;Lcom/juul/datadog/Configuration$Features;Lcom/juul/datadog/Configuration$UploadFrequency;)Lcom/juul/datadog/Configuration;
public static synthetic fun copy$default (Lcom/juul/datadog/Configuration;Ljava/lang/String;Lcom/juul/datadog/Site;Ljava/lang/String;Ljava/lang/String;Lcom/juul/datadog/Configuration$Features;Lcom/juul/datadog/Configuration$UploadFrequency;ILjava/lang/Object;)Lcom/juul/datadog/Configuration;
public fun equals (Ljava/lang/Object;)Z
public final fun getClientToken ()Ljava/lang/String;
public final fun getEnvironment ()Ljava/lang/String;
public final fun getFeatures ()Lcom/juul/datadog/Configuration$Features;
public final fun getService ()Ljava/lang/String;
public final fun getSite ()Lcom/juul/datadog/Site;
public final fun getUploadFrequency ()Lcom/juul/datadog/Configuration$UploadFrequency;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}

public final class com/juul/datadog/Configuration$Features {
public fun <init> ()V
public fun <init> (Z)V
public synthetic fun <init> (ZILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Z
public final fun copy (Z)Lcom/juul/datadog/Configuration$Features;
public static synthetic fun copy$default (Lcom/juul/datadog/Configuration$Features;ZILjava/lang/Object;)Lcom/juul/datadog/Configuration$Features;
public fun equals (Ljava/lang/Object;)Z
public final fun getLogs ()Z
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}

public final class com/juul/datadog/Configuration$UploadFrequency : java/lang/Enum {
public static final field Average Lcom/juul/datadog/Configuration$UploadFrequency;
public static final field Frequent Lcom/juul/datadog/Configuration$UploadFrequency;
public static final field Rare Lcom/juul/datadog/Configuration$UploadFrequency;
public static fun getEntries ()Lkotlin/enums/EnumEntries;
public static fun valueOf (Ljava/lang/String;)Lcom/juul/datadog/Configuration$UploadFrequency;
public static fun values ()[Lcom/juul/datadog/Configuration$UploadFrequency;
}

public abstract interface class com/juul/datadog/Initializer {
public abstract fun initialize (Lcom/juul/datadog/TrackingConsent;Lkotlin/jvm/functions/Function0;)V
public abstract fun setTrackingConsent (Lcom/juul/datadog/TrackingConsent;)V
}

public final class com/juul/datadog/Initializer$DefaultImpls {
public static synthetic fun initialize$default (Lcom/juul/datadog/Initializer;Lcom/juul/datadog/TrackingConsent;Lkotlin/jvm/functions/Function0;ILjava/lang/Object;)V
}

public abstract interface class com/juul/datadog/JvmLogger : com/juul/datadog/Logger {
public abstract fun assert (Ljava/lang/String;Ljava/util/Map;Ljava/lang/Throwable;)V
public abstract fun verbose (Ljava/lang/String;Ljava/util/Map;Ljava/lang/Throwable;)V
}

public final class com/juul/datadog/JvmLogger$DefaultImpls {
public static synthetic fun assert$default (Lcom/juul/datadog/JvmLogger;Ljava/lang/String;Ljava/util/Map;Ljava/lang/Throwable;ILjava/lang/Object;)V
public static synthetic fun verbose$default (Lcom/juul/datadog/JvmLogger;Ljava/lang/String;Ljava/util/Map;Ljava/lang/Throwable;ILjava/lang/Object;)V
}

public abstract interface class com/juul/datadog/Logger {
public abstract fun addAttribute (Ljava/lang/String;Ljava/lang/String;)V
public abstract fun debug (Ljava/lang/String;Ljava/util/Map;Ljava/lang/Throwable;)V
public abstract fun error (Ljava/lang/String;Ljava/util/Map;Ljava/lang/Throwable;)V
public abstract fun info (Ljava/lang/String;Ljava/util/Map;Ljava/lang/Throwable;)V
public abstract fun log (Lcom/juul/datadog/Logger$Level;Ljava/lang/String;Ljava/util/Map;Ljava/lang/Throwable;)V
public abstract fun removeAttribute (Ljava/lang/String;)V
public abstract fun warn (Ljava/lang/String;Ljava/util/Map;Ljava/lang/Throwable;)V
}

public final class com/juul/datadog/Logger$DefaultImpls {
public static synthetic fun debug$default (Lcom/juul/datadog/Logger;Ljava/lang/String;Ljava/util/Map;Ljava/lang/Throwable;ILjava/lang/Object;)V
public static synthetic fun error$default (Lcom/juul/datadog/Logger;Ljava/lang/String;Ljava/util/Map;Ljava/lang/Throwable;ILjava/lang/Object;)V
public static synthetic fun info$default (Lcom/juul/datadog/Logger;Ljava/lang/String;Ljava/util/Map;Ljava/lang/Throwable;ILjava/lang/Object;)V
public static synthetic fun log$default (Lcom/juul/datadog/Logger;Lcom/juul/datadog/Logger$Level;Ljava/lang/String;Ljava/util/Map;Ljava/lang/Throwable;ILjava/lang/Object;)V
public static synthetic fun warn$default (Lcom/juul/datadog/Logger;Ljava/lang/String;Ljava/util/Map;Ljava/lang/Throwable;ILjava/lang/Object;)V
}

public final class com/juul/datadog/Logger$Level : java/lang/Enum {
public static final field Assert Lcom/juul/datadog/Logger$Level;
public static final field Debug Lcom/juul/datadog/Logger$Level;
public static final field Error Lcom/juul/datadog/Logger$Level;
public static final field Info Lcom/juul/datadog/Logger$Level;
public static final field Notice Lcom/juul/datadog/Logger$Level;
public static final field Verbose Lcom/juul/datadog/Logger$Level;
public static final field Warn Lcom/juul/datadog/Logger$Level;
public static fun getEntries ()Lkotlin/enums/EnumEntries;
public static fun valueOf (Ljava/lang/String;)Lcom/juul/datadog/Logger$Level;
public static fun values ()[Lcom/juul/datadog/Logger$Level;
}

public final class com/juul/datadog/LoggerConfiguration {
public fun <init> (Ljava/lang/String;ZZZFZ)V
public synthetic fun <init> (Ljava/lang/String;ZZZFZILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ljava/lang/String;
public final fun component2 ()Z
public final fun component3 ()Z
public final fun component4 ()Z
public final fun component5 ()F
public final fun component6 ()Z
public final fun copy (Ljava/lang/String;ZZZFZ)Lcom/juul/datadog/LoggerConfiguration;
public static synthetic fun copy$default (Lcom/juul/datadog/LoggerConfiguration;Ljava/lang/String;ZZZFZILjava/lang/Object;)Lcom/juul/datadog/LoggerConfiguration;
public fun equals (Ljava/lang/Object;)Z
public final fun getBundleWithRumEnabled ()Z
public final fun getBundleWithTraceEnabled ()Z
public final fun getLogToConsole ()Z
public final fun getNetworkInfoEnabled ()Z
public final fun getRemoteSampleRate ()F
public final fun getServiceName ()Ljava/lang/String;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}

public final class com/juul/datadog/NoopInitializer : com/juul/datadog/Initializer {
public fun <init> ()V
public fun initialize (Lcom/juul/datadog/TrackingConsent;Lkotlin/jvm/functions/Function0;)V
public fun setTrackingConsent (Lcom/juul/datadog/TrackingConsent;)V
}

public final class com/juul/datadog/NoopLogger : com/juul/datadog/Logger {
public fun <init> ()V
public fun addAttribute (Ljava/lang/String;Ljava/lang/String;)V
public fun debug (Ljava/lang/String;Ljava/util/Map;Ljava/lang/Throwable;)V
public fun error (Ljava/lang/String;Ljava/util/Map;Ljava/lang/Throwable;)V
public fun info (Ljava/lang/String;Ljava/util/Map;Ljava/lang/Throwable;)V
public fun log (Lcom/juul/datadog/Logger$Level;Ljava/lang/String;Ljava/util/Map;Ljava/lang/Throwable;)V
public fun removeAttribute (Ljava/lang/String;)V
public fun warn (Ljava/lang/String;Ljava/util/Map;Ljava/lang/Throwable;)V
}

public final class com/juul/datadog/Site : java/lang/Enum {
public static final field EU1 Lcom/juul/datadog/Site;
public static final field US1 Lcom/juul/datadog/Site;
public static final field US1_FED Lcom/juul/datadog/Site;
public static final field US3 Lcom/juul/datadog/Site;
public static final field US5 Lcom/juul/datadog/Site;
public static fun getEntries ()Lkotlin/enums/EnumEntries;
public static fun valueOf (Ljava/lang/String;)Lcom/juul/datadog/Site;
public static fun values ()[Lcom/juul/datadog/Site;
}

public abstract interface class com/juul/datadog/TagHandler {
public abstract fun addTag (Ljava/lang/String;)V
public abstract fun addTagWithKey (Ljava/lang/String;Ljava/lang/String;)V
public abstract fun removeTag (Ljava/lang/String;)V
public abstract fun removeTagsWithKey (Ljava/lang/String;)V
}

public final class com/juul/datadog/TrackingConsent : java/lang/Enum {
public static final field Granted Lcom/juul/datadog/TrackingConsent;
public static final field NotGranted Lcom/juul/datadog/TrackingConsent;
public static final field Pending Lcom/juul/datadog/TrackingConsent;
public static fun getEntries ()Lkotlin/enums/EnumEntries;
public static fun valueOf (Ljava/lang/String;)Lcom/juul/datadog/TrackingConsent;
public static fun values ()[Lcom/juul/datadog/TrackingConsent;
}

58 changes: 58 additions & 0 deletions datadog-ktor/api/ktor.api
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
public final class com/juul/datadog/ktor/DatadogKtorConfiguration {
public fun <init> (Lcom/juul/datadog/ktor/RestConfiguration;Lcom/juul/datadog/ktor/LogConfiguration;)V
public synthetic fun <init> (Lcom/juul/datadog/ktor/RestConfiguration;Lcom/juul/datadog/ktor/LogConfiguration;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Lcom/juul/datadog/ktor/RestConfiguration;
public final fun component2 ()Lcom/juul/datadog/ktor/LogConfiguration;
public final fun copy (Lcom/juul/datadog/ktor/RestConfiguration;Lcom/juul/datadog/ktor/LogConfiguration;)Lcom/juul/datadog/ktor/DatadogKtorConfiguration;
public static synthetic fun copy$default (Lcom/juul/datadog/ktor/DatadogKtorConfiguration;Lcom/juul/datadog/ktor/RestConfiguration;Lcom/juul/datadog/ktor/LogConfiguration;ILjava/lang/Object;)Lcom/juul/datadog/ktor/DatadogKtorConfiguration;
public fun equals (Ljava/lang/Object;)Z
public final fun getLog ()Lcom/juul/datadog/ktor/LogConfiguration;
public final fun getRest ()Lcom/juul/datadog/ktor/RestConfiguration;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}

public final class com/juul/datadog/ktor/KtorDatadogLoggerKt {
public static final fun ktorDatadogLogger (Lcom/juul/datadog/ktor/DatadogKtorConfiguration;Lio/ktor/client/HttpClient;Lkotlinx/coroutines/CoroutineScope;)Lcom/juul/datadog/ktor/RestLogger;
}

public final class com/juul/datadog/ktor/LogConfiguration {
public fun <init> ()V
public fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
public synthetic fun <init> (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ljava/lang/String;
public final fun component2 ()Ljava/lang/String;
public final fun component3 ()Ljava/lang/String;
public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/juul/datadog/ktor/LogConfiguration;
public static synthetic fun copy$default (Lcom/juul/datadog/ktor/LogConfiguration;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lcom/juul/datadog/ktor/LogConfiguration;
public fun equals (Ljava/lang/Object;)Z
public final fun getHost ()Ljava/lang/String;
public final fun getService ()Ljava/lang/String;
public final fun getSource ()Ljava/lang/String;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}

public final class com/juul/datadog/ktor/RestConfiguration {
public fun <init> (Ljava/lang/String;Lcom/juul/datadog/Site;)V
public final fun component1 ()Ljava/lang/String;
public final fun component2 ()Lcom/juul/datadog/Site;
public final fun copy (Ljava/lang/String;Lcom/juul/datadog/Site;)Lcom/juul/datadog/ktor/RestConfiguration;
public static synthetic fun copy$default (Lcom/juul/datadog/ktor/RestConfiguration;Ljava/lang/String;Lcom/juul/datadog/Site;ILjava/lang/Object;)Lcom/juul/datadog/ktor/RestConfiguration;
public fun equals (Ljava/lang/Object;)Z
public final fun getApiKey ()Ljava/lang/String;
public final fun getSite ()Lcom/juul/datadog/Site;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}

public abstract interface class com/juul/datadog/ktor/RestLogger : com/juul/datadog/Logger, com/juul/datadog/TagHandler {
public abstract fun assert (Ljava/lang/String;Ljava/util/Map;Ljava/lang/Throwable;)V
public abstract fun verbose (Ljava/lang/String;Ljava/util/Map;Ljava/lang/Throwable;)V
}

public final class com/juul/datadog/ktor/RestLogger$DefaultImpls {
public static synthetic fun assert$default (Lcom/juul/datadog/ktor/RestLogger;Ljava/lang/String;Ljava/util/Map;Ljava/lang/Throwable;ILjava/lang/Object;)V
public static synthetic fun verbose$default (Lcom/juul/datadog/ktor/RestLogger;Ljava/lang/String;Ljava/util/Map;Ljava/lang/Throwable;ILjava/lang/Object;)V
}

39 changes: 39 additions & 0 deletions datadog-ktor/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
plugins {
kotlin("multiplatform")
alias(libs.plugins.kotlinter)
alias(libs.plugins.maven.publish)
}

kotlin {
explicitApi()
jvmToolchain(libs.versions.jvm.toolchain.get().toInt())

/* common
* |-- js
* |-- macos
* '-- mobile
* |-- ios
* '-- jvm
*/

iosArm64()
iosSimulatorArm64()
js().browser()
jvm()
macosArm64()
macosX64()

sourceSets {
val commonMain by getting {
dependencies {
api(projects.datadog)
api(libs.ktor.client.core)
implementation(libs.datetime)
implementation(libs.ktor.client.content)
implementation(libs.result)
implementation(libs.serialization.core)
implementation(libs.serialization.json)
}
}
}
}
19 changes: 19 additions & 0 deletions datadog-ktor/src/commonMain/kotlin/Configuration.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.juul.datadog.ktor

import com.juul.datadog.Site

public data class DatadogKtorConfiguration(
public val rest: RestConfiguration,
public val log: LogConfiguration = LogConfiguration(),
)

public data class RestConfiguration(
public val apiKey: String,
public val site: Site,
)

public data class LogConfiguration(
public val source: String? = null,
public val host: String? = null,
public val service: String? = null,
)
14 changes: 14 additions & 0 deletions datadog-ktor/src/commonMain/kotlin/KtorDatadogLogger.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.juul.datadog.ktor

import io.ktor.client.HttpClient
import kotlinx.coroutines.CoroutineScope

public fun ktorDatadogLogger(
configuration: DatadogKtorConfiguration,
http: HttpClient,
scope: CoroutineScope,
): RestLogger = KtorLogger(
scope,
DatadogLogSubmission(http, configuration.rest),
configuration.log,
)
Loading