|
7 | 7 | from typing import Any, Callable, Literal
|
8 | 8 | from urllib.parse import urlparse
|
9 | 9 |
|
| 10 | +from opentelemetry._events import ( |
| 11 | + EventLogger, # pyright: ignore[reportPrivateImportUsage] |
| 12 | + EventLoggerProvider, # pyright: ignore[reportPrivateImportUsage] |
| 13 | + Event, # pyright: ignore[reportPrivateImportUsage] |
| 14 | + get_event_logger_provider, # pyright: ignore[reportPrivateImportUsage] |
| 15 | +) |
10 | 16 | from opentelemetry._logs import (
|
11 | 17 | Logger, # pyright: ignore[reportPrivateImportUsage]
|
12 | 18 | LoggerProvider, # pyright: ignore[reportPrivateImportUsage]
|
@@ -90,7 +96,7 @@ def __init__(
|
90 | 96 | event_mode: Literal['attributes', 'logs'] = 'attributes',
|
91 | 97 | tracer_provider: TracerProvider | None = None,
|
92 | 98 | meter_provider: MeterProvider | None = None,
|
93 |
| - event_logger_provider: LoggerProvider | None = None, |
| 99 | + event_logger_provider: LoggerProvider | EventLoggerProvider | None = None, |
94 | 100 | include_binary_content: bool = True,
|
95 | 101 | include_content: bool = True,
|
96 | 102 | ):
|
@@ -121,7 +127,11 @@ def __init__(
|
121 | 127 | scope_name = 'pydantic-ai'
|
122 | 128 | self.tracer = tracer_provider.get_tracer(scope_name, __version__)
|
123 | 129 | self.meter = meter_provider.get_meter(scope_name, __version__)
|
124 |
| - self.event_logger = event_logger_provider.get_logger(scope_name, __version__) |
| 130 | + try: |
| 131 | + self.event_logger = event_logger_provider.get_logger(scope_name, __version__) |
| 132 | + except AttributeError: |
| 133 | + # Older OTel/logfire versions don't support LoggerProvider |
| 134 | + self.event_logger = event_logger_provider.get_event_logger(scope_name, __version__) |
125 | 135 | self.event_mode = event_mode
|
126 | 136 | self.include_binary_content = include_binary_content
|
127 | 137 | self.include_content = include_content
|
@@ -332,7 +342,7 @@ def _record_metrics():
|
332 | 342 | # to prevent them from being redundantly recorded in the span itself by logfire.
|
333 | 343 | record_metrics()
|
334 | 344 |
|
335 |
| - def _emit_events(self, span: Span, events: list[LogRecord]) -> None: |
| 345 | + def _emit_events(self, span: Span, events: list[LogRecord] | list[LogRecord]) -> None: |
336 | 346 | if self.instrumentation_settings.event_mode == 'logs':
|
337 | 347 | for event in events:
|
338 | 348 | self.instrumentation_settings.event_logger.emit(event)
|
|
0 commit comments