Skip to content

Commit c2cfbe0

Browse files
committed
refactor: centralize default logger selection in internal/Loggers
1 parent d340b78 commit c2cfbe0

3 files changed

Lines changed: 42 additions & 28 deletions

File tree

lib/sdk/server-ai/src/main/java/com/launchdarkly/sdk/server/ai/AIGraphTracker.java

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
package com.launchdarkly.sdk.server.ai;
22

3-
import com.launchdarkly.logging.LDLogAdapter;
43
import com.launchdarkly.logging.LDLogger;
5-
import com.launchdarkly.logging.LDSLF4J;
6-
import com.launchdarkly.logging.Logs;
74
import com.launchdarkly.sdk.ArrayBuilder;
85
import com.launchdarkly.sdk.LDContext;
96
import com.launchdarkly.sdk.LDValue;
107
import com.launchdarkly.sdk.ObjectBuilder;
118
import com.launchdarkly.sdk.server.ai.datamodel.LDAITrackingTypes.TokenUsage;
9+
import com.launchdarkly.sdk.server.ai.internal.Loggers;
1210
import com.launchdarkly.sdk.server.ai.internal.ResumptionTokens;
1311
import com.launchdarkly.sdk.server.interfaces.LDClientInterface;
1412

@@ -96,7 +94,7 @@ public final class AIGraphTracker {
9694
*/
9795
public static AIGraphTracker fromResumptionToken(
9896
String token, LDClientInterface client, LDContext context) {
99-
return fromResumptionToken(token, client, context, defaultLogger());
97+
return fromResumptionToken(token, client, context, Loggers.defaultLogger());
10098
}
10199

102100
/**
@@ -311,14 +309,4 @@ private ObjectBuilder baseData() {
311309
return b;
312310
}
313311

314-
private static LDLogger defaultLogger() {
315-
LDLogAdapter adapter;
316-
try {
317-
Class.forName("org.slf4j.LoggerFactory");
318-
adapter = LDSLF4J.adapter();
319-
} catch (ClassNotFoundException e) {
320-
adapter = Logs.toConsole();
321-
}
322-
return LDLogger.withAdapter(adapter, "LaunchDarkly.AI");
323-
}
324312
}

lib/sdk/server-ai/src/main/java/com/launchdarkly/sdk/server/ai/LDAIClientImpl.java

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package com.launchdarkly.sdk.server.ai;
22

3-
import com.launchdarkly.logging.LDLogAdapter;
43
import com.launchdarkly.logging.LDLogger;
5-
import com.launchdarkly.logging.LDSLF4J;
6-
import com.launchdarkly.logging.Logs;
74
import com.launchdarkly.sdk.ContextKind;
85
import com.launchdarkly.sdk.LDContext;
96
import com.launchdarkly.sdk.LDValue;
@@ -16,6 +13,7 @@
1613
import com.launchdarkly.sdk.server.ai.internal.AISdkInfo;
1714
import com.launchdarkly.sdk.server.ai.internal.Interpolator;
1815
import com.launchdarkly.sdk.server.ai.internal.LDAIConfigTrackerImpl;
16+
import com.launchdarkly.sdk.server.ai.internal.Loggers;
1917
import com.launchdarkly.sdk.server.interfaces.LDClientInterface;
2018

2119
import java.util.ArrayList;
@@ -71,7 +69,7 @@ public final class LDAIClientImpl implements LDAIClient {
7169
* @param client an initialized server-side {@code LDClient}; must not be {@code null}
7270
*/
7371
public LDAIClientImpl(LDClientInterface client) {
74-
this(client, defaultLogger());
72+
this(client, Loggers.defaultLogger());
7573
}
7674

7775
/**
@@ -472,14 +470,4 @@ private String interpolate(String template, Map<String, Object> variables, LDCon
472470
return interpolator.interpolate(template, variables, context);
473471
}
474472

475-
private static LDLogger defaultLogger() {
476-
LDLogAdapter adapter;
477-
try {
478-
Class.forName("org.slf4j.LoggerFactory");
479-
adapter = LDSLF4J.adapter();
480-
} catch (ClassNotFoundException e) {
481-
adapter = Logs.toConsole();
482-
}
483-
return LDLogger.withAdapter(adapter, "LaunchDarkly.AI");
484-
}
485473
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.launchdarkly.sdk.server.ai.internal;
2+
3+
import com.launchdarkly.logging.LDLogAdapter;
4+
import com.launchdarkly.logging.LDLogger;
5+
import com.launchdarkly.logging.LDSLF4J;
6+
import com.launchdarkly.logging.Logs;
7+
8+
/**
9+
* Shared logging utilities for the AI SDK.
10+
* <p>
11+
* Centralizes the SLF4J-with-console-fallback adapter selection so no individual class needs to
12+
* replicate the {@code Class.forName} probe.
13+
*/
14+
public final class Loggers {
15+
/** The logger name used throughout the AI SDK. */
16+
public static final String BASE_LOGGER_NAME = "LaunchDarkly.AI";
17+
18+
private Loggers() {}
19+
20+
/**
21+
* Returns the default {@link LDLogger} for the AI SDK.
22+
* <p>
23+
* Uses SLF4J if {@code org.slf4j.LoggerFactory} is on the classpath; otherwise falls back to
24+
* console output.
25+
*
26+
* @return a logger named {@value #BASE_LOGGER_NAME}
27+
*/
28+
public static LDLogger defaultLogger() {
29+
LDLogAdapter adapter;
30+
try {
31+
Class.forName("org.slf4j.LoggerFactory");
32+
adapter = LDSLF4J.adapter();
33+
} catch (ClassNotFoundException e) {
34+
adapter = Logs.toConsole();
35+
}
36+
return LDLogger.withAdapter(adapter, BASE_LOGGER_NAME);
37+
}
38+
}

0 commit comments

Comments
 (0)