Configure OpenTelemetry logging to redirect all messages to the AgentOps logger. All OpenTelemetry logs will be prefixed with [opentelemetry.X] and set to DEBUG level.
()
| 61 | |
| 62 | |
| 63 | def intercept_opentelemetry_logging(): |
| 64 | """ |
| 65 | Configure OpenTelemetry logging to redirect all messages to the AgentOps logger. |
| 66 | All OpenTelemetry logs will be prefixed with [opentelemetry.X] and set to DEBUG level. |
| 67 | """ |
| 68 | prefix = "opentelemetry" |
| 69 | otel_root_logger = logging.getLogger(prefix) |
| 70 | otel_root_logger.propagate = False |
| 71 | otel_root_logger.setLevel(logging.DEBUG) # capture all |
| 72 | |
| 73 | for handler in otel_root_logger.handlers[:]: |
| 74 | otel_root_logger.removeHandler(handler) |
| 75 | |
| 76 | # Create a handler that forwards all messages to the AgentOps logger |
| 77 | class OtelLogHandler(logging.Handler): |
| 78 | def emit(self, record): |
| 79 | if record.name.startswith(f"{prefix}."): |
| 80 | module_name = record.name.replace(f"{prefix}.", "", 1) |
| 81 | else: |
| 82 | module_name = record.name |
| 83 | message = f"[{prefix}.{module_name}] {record.getMessage()}" |
| 84 | logger.debug(message) |
| 85 | |
| 86 | otel_root_logger.addHandler(OtelLogHandler()) |
searching dependent graphs…