Skip to content

Exception while exporting logs: Invalid type {type(value)} of value {value} #3389

@rayrapetyan

Description

@rayrapetyan

Steps to reproduce

try:
   ...
except Exception as e:
   logging.warning(e)

What is the expected behavior?
No "Exception while exporting logs" errors in log

What is the actual behavior?
"Exception while exporting logs" error in log

Additional info

{"body":"Exception while exporting logs.","severity":"ERROR","attributes":{"exception.message":"Invalid type \u003cclass 'ValueError'\u003e of value invalid literal for int() with base 10: ''","exception.stacktrace":"Traceback (most recent call last):
  File \"/usr/local/lib/python3.9/site-packages/opentelemetry/sdk/_logs/_internal/export/__init__.py\", line 312, in _export_batch
    self._exporter.export(self._log_records[:idx])  # type: ignore
  File \"/usr/local/lib/python3.9/site-packages/opentelemetry/exporter/otlp/proto/grpc/_log_exporter/__init__.py\", line 108, in export
    return self._export(batch)
  File \"/usr/local/lib/python3.9/site-packages/opentelemetry/exporter/otlp/proto/grpc/exporter.py\", line 276, in _export
    request=self._translate_data(data),
  File \"/usr/local/lib/python3.9/site-packages/opentelemetry/exporter/otlp/proto/grpc/_log_exporter/__init__.py\", line 105, in _translate_data
    return encode_logs(data)
  File \"/usr/local/lib/python3.9/site-packages/opentelemetry/exporter/otlp/proto/common/_internal/_log_encoder/__init__.py\", line 38, in encode_logs
    return ExportLogsServiceRequest(resource_logs=_encode_resource_logs(batch))
  File \"/usr/local/lib/python3.9/site-packages/opentelemetry/exporter/otlp/proto/common/_internal/_log_encoder/__init__.py\", line 61, in _encode_resource_logs
    pb2_log = _encode_log(sdk_log)
  File \"/usr/local/lib/python3.9/site-packages/opentelemetry/exporter/otlp/proto/common/_internal/_log_encoder/__init__.py\", line 47, in _encode_log
    body=_encode_value(log_data.log_record.body),
  File \"/usr/local/lib/python3.9/site-packages/opentelemetry/exporter/otlp/proto/common/_internal/__init__.py\", line 79, in _encode_value
    raise Exception(f\"Invalid type {type(value)} of value {value}\")
Exception: Invalid type \u003cclass 'ValueError'\u003e of value invalid literal for int() with base 10: ''
","exception.type":"Exception"},"resources":{"telemetry.sdk.language":"python","telemetry.sdk.name":"opentelemetry","telemetry.sdk.version":"1.19.0"},"instrumentation_scope":{"name":"opentelemetry.sdk._logs._internal"}}

I think _encode_value at

should first try to convert value to string explicitly and only raise if conversion fails.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions