{"record":{"id":"0d38a78774d03fcb","repo":"BerriAI/litellm","slug":"opentelemetry-otlp-grpc-log-exporter-is-not-availa-0d38a7","errorCode":null,"errorMessage":"OpenTelemetry OTLP gRPC log exporter is not available. Install `opentelemetry-exporter-otlp` and `grpcio` (or `litellm[grpc]`).","messagePattern":"OpenTelemetry OTLP gRPC log exporter is not available\\. Install `opentelemetry-exporter-otlp` and `grpcio` \\(or `litellm\\[grpc\\]`\\)\\.","errorType":"exception","errorClass":"ImportError","httpStatus":null,"severity":"error","filePath":"litellm/integrations/otel/plumbing/providers.py","lineNumber":299,"sourceCode":"    kind: Final = (config.exporter or \"console\").lower()\n    if kind in (\"in_memory\", \"inmemory\", \"memory\"):\n        return InMemoryLogExporter()\n    if kind in (\"otlp_http\", \"http\", \"http/protobuf\", \"http/json\"):\n        from opentelemetry.exporter.otlp.proto.http._log_exporter import (\n            OTLPLogExporter as HTTPLogExporter,\n        )\n\n        return HTTPLogExporter(\n            endpoint=_otlp_logs_endpoint(config.endpoint),\n            headers=parse_headers(config.headers),\n        )\n    if kind in (\"otlp_grpc\", \"grpc\"):\n        try:\n            from opentelemetry.exporter.otlp.proto.grpc._log_exporter import (\n                OTLPLogExporter as GRPCLogExporter,\n            )\n        except ImportError as exc:\n            raise ImportError(\n                \"OpenTelemetry OTLP gRPC log exporter is not available. Install \"\n                \"`opentelemetry-exporter-otlp` and `grpcio` (or `litellm[grpc]`).\"\n            ) from exc\n\n        return GRPCLogExporter(endpoint=config.endpoint, headers=parse_headers(config.headers))\n    return ConsoleLogExporter()\n\n\ndef build_logger_provider(\n    config: OpenTelemetryV2Config,\n    log_exporter: LogExporter | None = None,\n) -> SDKLoggerProvider:\n    \"\"\"Build the :class:`LoggerProvider` GenAI events export through.\n\n    ``log_exporter`` is an explicit override (tests inject an\n    ``InMemoryLogExporter``); otherwise the exporter is selected from the config's\n    exporter kind via :func:`build_log_exporter`. Console and in-memory exporters\n    get a Simple processor (synchronous export, which tests rely on), everything","sourceCodeStart":281,"sourceCodeEnd":317,"githubUrl":"https://github.com/BerriAI/litellm/blob/6c2dcb801bf2b75c18f1bb24140e7cf57465cc4d/litellm/integrations/otel/plumbing/providers.py#L281-L317","documentation":"Error \"OpenTelemetry OTLP gRPC log exporter is not available. Install `opentelemetry-exporter-otlp` and `grpcio` (or `litellm[grpc]`).\" thrown in BerriAI/litellm.","triggerScenarios":"Thrown at litellm/integrations/otel/plumbing/providers.py:299 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Install gRPC exporter deps: pip install opentelemetry-exporter-otlp grpcio (or litellm[grpc])."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"6c2dcb801bf2b75c18f1bb24140e7cf57465cc4d","analyzedAt":"2026-08-15T07:12:03.035Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}