Skip to main content

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:
  1. app starts instrumentation before serving requests
  2. spans are created for real requests
  3. processor flush/export succeeds
  4. 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.