Documentation Index
Fetch the complete documentation index at: https://docs.uselemma.ai/llms.txt
Use this file to discover all available pages before exploring further.
Use runtime logging to validate the full path:
- app starts instrumentation before serving requests
- spans are created for real requests
- processor flush/export succeeds
- traces appear in Lemma
TypeScript: enable OTel debug logs
Add this near process startup (before provider registration):
import { diag, DiagConsoleLogger, DiagLogLevel } from "@opentelemetry/api";
diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.DEBUG);
This surfaces SDK/exporter diagnostics in local logs.
Langfuse debug mode
If you use Langfuse’s integration, Langfuse has its own debug logging mode. For JS/TS runtimes, enable one of:
export LANGFUSE_DEBUG="true"
# or
export LANGFUSE_LOG_LEVEL="DEBUG"
For Python runtimes:
export LANGFUSE_DEBUG="True"
This is useful for diagnosing filtered spans, exporter behavior, and ingestion issues before traces reach Lemma. If you use another OpenTelemetry-compatible stack, use that stack’s debug logging plus the OTel diagnostics above.
TypeScript: expose processor and force flush
Export your Langfuse processor from startup setup:
import { LangfuseSpanProcessor } from "@langfuse/otel";
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-proto";
import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
export const langfuseSpanProcessor = new LangfuseSpanProcessor({
exporter: new OTLPTraceExporter({
url: process.env.LEMMA_BASE_URL,
headers: {
Authorization: `Bearer ${process.env.LEMMA_API_KEY}`,
"X-Lemma-Project-ID": process.env.LEMMA_PROJECT_ID,
},
}),
});
const provider = new NodeTracerProvider({
spanProcessors: [langfuseSpanProcessor],
});
provider.register();
Then flush after a request in short-lived/serverless contexts:
try {
await langfuseSpanProcessor.forceFlush();
} catch (error) {
console.error("Tracing flush failed", error);
}
Python: raise OpenTelemetry log verbosity
import logging
logging.basicConfig(level=logging.DEBUG)
logging.getLogger("opentelemetry").setLevel(logging.DEBUG)
Quick verification checklist
- Trigger one request that should emit spans.
- Confirm no auth/header errors in logs.
- Confirm
forceFlush() succeeds.
- Verify the same trace appears in Lemma.
References
For setup details, start from Langfuse integration.