from aden import (
create_multi_emitter,
create_filtered_emitter,
create_batch_emitter,
create_transform_emitter,
create_console_emitter,
)
import os
emitters = []
# Always log to console in development
if os.environ.get("ENV") == "development":
emitters.append(create_console_emitter(pretty=True))
# Send all events to primary backend
emitters.append(
create_batch_emitter(
handler=lambda batch: send_to_primary(batch),
batch_size=100,
)
)
# Send only errors to monitoring
emitters.append(
create_filtered_emitter(
emitter=lambda e: send_to_monitoring(e),
filter_fn=lambda e: e.error is not None,
)
)
# Send anonymized data to analytics
emitters.append(
create_transform_emitter(
emitter=lambda e: send_to_analytics(e),
transform_fn=lambda e: MetricEvent(
provider=e.provider,
model=e.model,
usage=e.usage,
# Remove identifiable info
trace_id="",
span_id="",
metadata=None,
),
)
)
final_emitter = create_multi_emitter(emitters)