Skip to content
This repository was archived by the owner on Mar 9, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all 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
Original file line number Diff line number Diff line change
Expand Up @@ -75,8 +75,14 @@ private static void initializeTraceRoot(Dotenv dotenv) {
.enableSpanCloudExport(true) // Enable tracing export to OTLP endpoint
.enableLogCloudExport(false) // Disable cloud export for logs (local file only)
.logLevel(LogLevel.TRACE)
.otlpEndpoint(dotenv.get("TRACEROOT_OTLP_ENDPOINT", System.getenv("TRACEROOT_OTLP_ENDPOINT"))) // Get from .env or environment
.rootPath(dotenv.get("TRACEROOT_ROOT_PATH", System.getenv("TRACEROOT_ROOT_PATH"))) // Get from .env or environment
.otlpEndpoint(
dotenv.get(
"TRACEROOT_OTLP_ENDPOINT",
System.getenv("TRACEROOT_OTLP_ENDPOINT"))) // Get from .env or environment
.rootPath(
dotenv.get(
"TRACEROOT_ROOT_PATH",
System.getenv("TRACEROOT_ROOT_PATH"))) // Get from .env or environment
.build();

// Initialize SDK (similar to Sentry.init(options))
Expand Down
2 changes: 1 addition & 1 deletion examples/logback-local-example/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
<dependency>
<groupId>ai.traceroot</groupId>
<artifactId>traceroot-sdk-java</artifactId>
<version>0.0.1-alpha.1</version>
<version>0.0.1-alpha.3</version>
</dependency>

<!-- Logback (explicitly included since it's optional in the SDK) -->
Expand Down
4 changes: 2 additions & 2 deletions examples/spring-boot-example/.env.example
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# The token for the TraceRoot API
TRACEROOT_TOKEN=your_traceroot_token_here
TRACEROOT_TOKEN=traceroot-7c7c3b05e9ce300ca77fc4b0e72751cc

# Enable cloud export of spans (default: `true`)
TRACEROOT_ENABLE_SPAN_CLOUD_EXPORT=true
Expand All @@ -8,4 +8,4 @@ TRACEROOT_ENABLE_SPAN_CLOUD_EXPORT=true
TRACEROOT_ENABLE_LOG_CLOUD_EXPORT=true

# Absolute path to your project root directory
TRACEROOT_ROOT_PATH=your_project_path_here
TRACEROOT_ROOT_PATH=/Users/zecheng/code/traceroot-sdk-java
2 changes: 1 addition & 1 deletion examples/spring-boot-example/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
<dependency>
<groupId>ai.traceroot</groupId>
<artifactId>traceroot-sdk-java</artifactId>
<version>0.0.1-alpha.1</version>
<version>0.0.1-alpha.3</version>
</dependency>

<!-- Spring Boot -->
Expand Down
10 changes: 2 additions & 8 deletions examples/spring-boot-example/src/main/java/com/example/App.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,8 @@ public void initializeTraceRoot() {
.region("us-west-2")
.enableSpanConsoleExport(false)
.enableLogConsoleExport(true)
.enableSpanCloudExport(
dotenv.get(
"TRACEROOT_ENABLE_SPAN_CLOUD_EXPORT",
System.getenv("TRACEROOT_ENABLE_SPAN_CLOUD_EXPORT")))
.enableLogCloudExport(
dotenv.get(
"TRACEROOT_ENABLE_LOG_CLOUD_EXPORT",
System.getenv("TRACEROOT_ENABLE_LOG_CLOUD_EXPORT")))
.enableSpanCloudExport(true)
.enableLogCloudExport(true)
.localMode(false)
.logLevel(LogLevel.INFO)
.tracerVerbose(true)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,7 @@ public void delete(@PathVariable("id") Long id) {
// Minimal error handling
@ResponseStatus(HttpStatus.NOT_FOUND)
@ExceptionHandler(TaskNotFound.class)
@Trace(spanName = "handle-task-not-found")
public String notFound(TaskNotFound ex) {
logger.error("Task not found error: {}", ex.getMessage());
return ex.getMessage();
Expand Down
2 changes: 1 addition & 1 deletion examples/standalone-example/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
<dependency>
<groupId>ai.traceroot</groupId>
<artifactId>traceroot-sdk-java</artifactId>
<version>0.0.1-alpha.1</version>
<version>0.0.1-alpha.3</version>
</dependency>

<!-- Logback (explicitly included since it's optional in the SDK) -->
Expand Down
2 changes: 1 addition & 1 deletion examples/tencent-log4j2-example/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
<dependency>
<groupId>ai.traceroot</groupId>
<artifactId>traceroot-sdk-java</artifactId>
<version>0.0.1-alpha.1</version>
<version>0.0.1-alpha.3</version>
<exclusions>
<!-- Exclude Logback to use Log4j2 instead -->
<exclusion>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,18 +71,26 @@ private static void initializeTraceRoot(Dotenv dotenv) {
.enableSpanCloudExport(true) // Enable for cloud export
.enableLogCloudExport(true) // Enable for Tencent CLS export
.logLevel(LogLevel.TRACE)
.rootPath(dotenv.get("TRACEROOT_ROOT_PATH", System.getenv("TRACEROOT_ROOT_PATH"))) // Get from .env or environment
.rootPath(
dotenv.get(
"TRACEROOT_ROOT_PATH",
System.getenv("TRACEROOT_ROOT_PATH"))) // Get from .env or environment
.build();

// Configure Tencent Cloud credentials (required for Tencent provider)
TencentCredentials tencentCredentials = new TencentCredentials();
tencentCredentials.setSecretId(
dotenv.get("TENCENT_SECRET_ID", System.getenv("TENCENT_SECRET_ID"))); // Get from .env or environment
dotenv.get(
"TENCENT_SECRET_ID",
System.getenv("TENCENT_SECRET_ID"))); // Get from .env or environment
tencentCredentials.setSecretKey(
dotenv.get("TENCENT_SECRET_KEY", System.getenv("TENCENT_SECRET_KEY"))); // Get from .env or environment
dotenv.get(
"TENCENT_SECRET_KEY",
System.getenv("TENCENT_SECRET_KEY"))); // Get from .env or environment
tencentCredentials.setRegion("ap-hongkong"); // Optional: defaults to ap-hongkong
tencentCredentials.setLogset(
dotenv.get("TENCENT_LOGSET", System.getenv("TENCENT_LOGSET"))); // Get from .env or environment
dotenv.get(
"TENCENT_LOGSET", System.getenv("TENCENT_LOGSET"))); // Get from .env or environment
tencentCredentials.setTraceToken(
dotenv.get("TRACE_TOKEN", System.getenv("TRACE_TOKEN"))); // Get from .env or environment

Expand Down
2 changes: 1 addition & 1 deletion examples/tencent-logback-example/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
<dependency>
<groupId>ai.traceroot</groupId>
<artifactId>traceroot-sdk-java</artifactId>
<version>0.0.1-alpha.1</version>
<version>0.0.1-alpha.3</version>
</dependency>

<!-- Logback (explicitly included since it's optional in the SDK) -->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import ai.traceroot.sdk.logger.TraceRootLoggerInterface;
import ai.traceroot.sdk.types.LogLevel;
import ai.traceroot.sdk.utils.LogAppenderUtils;
import ai.traceroot.sdk.utils.SpanLogCounter;
import java.util.Map;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
Expand Down Expand Up @@ -152,76 +153,91 @@ private static org.apache.logging.log4j.Level convertLogLevel(LogLevel logLevel)

@Override
public void trace(String message) {
SpanLogCounter.incrementTraceLogCount();
logWithTraceCorrelation(() -> logger.trace(message));
}

@Override
public void trace(String format, Object... args) {
SpanLogCounter.incrementTraceLogCount();
logWithTraceCorrelation(() -> logger.trace(format, args));
}

@Override
public void trace(String message, Throwable throwable) {
SpanLogCounter.incrementTraceLogCount();
logWithTraceCorrelation(() -> logger.trace(message, throwable));
}

@Override
public void debug(String message) {
SpanLogCounter.incrementDebugLogCount();
logWithTraceCorrelation(() -> logger.debug(message));
}

@Override
public void debug(String format, Object... args) {
SpanLogCounter.incrementDebugLogCount();
logWithTraceCorrelation(() -> logger.debug(format, args));
}

@Override
public void debug(String message, Throwable throwable) {
SpanLogCounter.incrementDebugLogCount();
logWithTraceCorrelation(() -> logger.debug(message, throwable));
}

@Override
public void info(String message) {
SpanLogCounter.incrementInfoLogCount();
logWithTraceCorrelation(() -> logger.info(message));
}

@Override
public void info(String format, Object... args) {
SpanLogCounter.incrementInfoLogCount();
logWithTraceCorrelation(() -> logger.info(format, args));
}

@Override
public void info(String message, Throwable throwable) {
SpanLogCounter.incrementInfoLogCount();
logWithTraceCorrelation(() -> logger.info(message, throwable));
}

@Override
public void warn(String message) {
SpanLogCounter.incrementWarnLogCount();
logWithTraceCorrelation(() -> logger.warn(message));
}

@Override
public void warn(String format, Object... args) {
SpanLogCounter.incrementWarnLogCount();
logWithTraceCorrelation(() -> logger.warn(format, args));
}

@Override
public void warn(String message, Throwable throwable) {
SpanLogCounter.incrementWarnLogCount();
logWithTraceCorrelation(() -> logger.warn(message, throwable));
}

@Override
public void error(String message) {
SpanLogCounter.incrementErrorLogCount();
logWithTraceCorrelation(() -> logger.error(message));
}

@Override
public void error(String format, Object... args) {
SpanLogCounter.incrementErrorLogCount();
logWithTraceCorrelation(() -> logger.error(format, args));
}

@Override
public void error(String message, Throwable throwable) {
SpanLogCounter.incrementErrorLogCount();
logWithTraceCorrelation(() -> logger.error(message, throwable));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import ai.traceroot.sdk.types.LogLevel;
import ai.traceroot.sdk.utils.LogAppenderUtils;
import ai.traceroot.sdk.utils.ProviderValidationUtils;
import ai.traceroot.sdk.utils.SpanLogCounter;
import ch.qos.logback.classic.Logger;
import ch.qos.logback.classic.LoggerContext;
import java.util.Map;
Expand Down Expand Up @@ -79,21 +80,6 @@ private static void setupJsonConsoleAppender(LoggerContext context, TraceRootCon
try {
Logger rootLogger = context.getLogger(Logger.ROOT_LOGGER_NAME);

// Debug: print all appenders
System.out.println("[TraceRoot] Checking appenders...");
java.util.Iterator<ch.qos.logback.core.Appender<ch.qos.logback.classic.spi.ILoggingEvent>>
debugIter = rootLogger.iteratorForAppenders();
while (debugIter.hasNext()) {
ch.qos.logback.core.Appender<ch.qos.logback.classic.spi.ILoggingEvent> app =
debugIter.next();
System.out.println(
"[TraceRoot] Found appender: "
+ app.getName()
+ " (type: "
+ app.getClass().getName()
+ ")");
}

// Iterate through existing appenders to wrap FILE appenders with TraceRoot format
java.util.List<ch.qos.logback.core.Appender<ch.qos.logback.classic.spi.ILoggingEvent>>
appendersToWrap = new java.util.ArrayList<>();
Expand All @@ -106,15 +92,13 @@ private static void setupJsonConsoleAppender(LoggerContext context, TraceRootCon
// Wrap FILE appenders to add TraceRoot JSON format
if ("FILE".equals(appender.getName())
&& !(appender instanceof LogbackFileAppenderWrapper)) {
System.out.println("[TraceRoot] Will wrap FILE appender: " + appender.getName());
appendersToWrap.add(appender);
}
}

// Wrap the FILE appenders
for (ch.qos.logback.core.Appender<ch.qos.logback.classic.spi.ILoggingEvent> appender :
appendersToWrap) {
System.out.println("[TraceRoot] Wrapping appender: " + appender.getName());
// Remove the original appender
rootLogger.detachAppender(appender);

Expand All @@ -127,7 +111,6 @@ private static void setupJsonConsoleAppender(LoggerContext context, TraceRootCon

// Add the wrapped appender
rootLogger.addAppender(wrapper);
System.out.println("[TraceRoot] Added wrapped FILE appender");
}

} catch (Exception e) {
Expand Down Expand Up @@ -200,76 +183,91 @@ private static ch.qos.logback.classic.Level convertLogLevel(LogLevel logLevel) {

@Override
public void trace(String message) {
SpanLogCounter.incrementTraceLogCount();
logWithTraceCorrelation(() -> logger.trace(message));
}

@Override
public void trace(String format, Object... args) {
SpanLogCounter.incrementTraceLogCount();
logWithTraceCorrelation(() -> logger.trace(format, args));
}

@Override
public void trace(String message, Throwable throwable) {
SpanLogCounter.incrementTraceLogCount();
logWithTraceCorrelation(() -> logger.trace(message, throwable));
}

@Override
public void debug(String message) {
SpanLogCounter.incrementDebugLogCount();
logWithTraceCorrelation(() -> logger.debug(message));
}

@Override
public void debug(String format, Object... args) {
SpanLogCounter.incrementDebugLogCount();
logWithTraceCorrelation(() -> logger.debug(format, args));
}

@Override
public void debug(String message, Throwable throwable) {
SpanLogCounter.incrementDebugLogCount();
logWithTraceCorrelation(() -> logger.debug(message, throwable));
}

@Override
public void info(String message) {
SpanLogCounter.incrementInfoLogCount();
logWithTraceCorrelation(() -> logger.info(message));
}

@Override
public void info(String format, Object... args) {
SpanLogCounter.incrementInfoLogCount();
logWithTraceCorrelation(() -> logger.info(format, args));
}

@Override
public void info(String message, Throwable throwable) {
SpanLogCounter.incrementInfoLogCount();
logWithTraceCorrelation(() -> logger.info(message, throwable));
}

@Override
public void warn(String message) {
SpanLogCounter.incrementWarnLogCount();
logWithTraceCorrelation(() -> logger.warn(message));
}

@Override
public void warn(String format, Object... args) {
SpanLogCounter.incrementWarnLogCount();
logWithTraceCorrelation(() -> logger.warn(format, args));
}

@Override
public void warn(String message, Throwable throwable) {
SpanLogCounter.incrementWarnLogCount();
logWithTraceCorrelation(() -> logger.warn(message, throwable));
}

@Override
public void error(String message) {
SpanLogCounter.incrementErrorLogCount();
logWithTraceCorrelation(() -> logger.error(message));
}

@Override
public void error(String format, Object... args) {
SpanLogCounter.incrementErrorLogCount();
logWithTraceCorrelation(() -> logger.error(format, args));
}

@Override
public void error(String message, Throwable throwable) {
SpanLogCounter.incrementErrorLogCount();
logWithTraceCorrelation(() -> logger.error(message, throwable));
}

Expand Down
Loading