import sqlite3 from opentelemetry.sdk.trace.export import SpanExporter, SpanExportResult class SQLiteSpanExporter(SpanExporter): def __init__(self, db_path="traces.db"): self.conn = sqlite3.connect(db_path) self.conn.execute(""" CREATE TABLE IF NOT EXISTS spans ( name TEXT, start_time INTEGER, end_time INTEGER, input_tokens INTEGER, output_tokens INTEGER, cost REAL ) """) self.conn.commit() def export(self, spans): for span in spans: attrs = dict(span.attributes or {}) self.conn.execute( "INSERT INTO spans VALUES (?, ?, ?, ?, ?, ?)", ( span.name, span.start_time, span.end_time, attrs.get("input_tokens"), attrs.get("output_tokens"), attrs.get("cost"), ), ) self.conn.commit() return SpanExportResult.SUCCESS def shutdown(self): self.conn.close() def force_flush(self): return True