diff --git a/dev-constraints.txt b/dev-constraints.txt index bdbb6771..ae26d9dc 100644 --- a/dev-constraints.txt +++ b/dev-constraints.txt @@ -17,5 +17,5 @@ setuptools==69.5.1 # pinned for snapshot tests. this should be bumped regularly and snapshots updated by running # tox -f py311-test -- --snapshot-update -opentelemetry-api==1.30.0 -opentelemetry-sdk==1.30.0 +opentelemetry-api==1.35.0 +opentelemetry-sdk==1.35.0 diff --git a/opentelemetry-exporter-gcp-logging/CHANGELOG.md b/opentelemetry-exporter-gcp-logging/CHANGELOG.md index 50d275c2..fea846d4 100644 --- a/opentelemetry-exporter-gcp-logging/CHANGELOG.md +++ b/opentelemetry-exporter-gcp-logging/CHANGELOG.md @@ -5,6 +5,9 @@ Added support for when `bytes` or `list['bytes']` is in `LogRecord.body` and body is of type Mapping. Update opentelemetry-api/sdk dependencies to 1.3. +The suffix part of `LogEntry.log_name` will be the `LogRecord.event_name` when +that is present and the `gcp.log_name` attribute is not. + ## Version 1.9.0a0 Released 2025-02-03 diff --git a/opentelemetry-exporter-gcp-logging/setup.cfg b/opentelemetry-exporter-gcp-logging/setup.cfg index 2f6e198d..91cd7598 100644 --- a/opentelemetry-exporter-gcp-logging/setup.cfg +++ b/opentelemetry-exporter-gcp-logging/setup.cfg @@ -26,8 +26,8 @@ package_dir= packages=find_namespace: install_requires = google-cloud-logging ~= 3.0 - opentelemetry-sdk ~= 1.30 - opentelemetry-api ~= 1.30 + opentelemetry-sdk >= 1.35.0 + opentelemetry-api >= 1.35.0 opentelemetry-resourcedetector-gcp >= 1.5.0dev0, == 1.* [options.packages.find] diff --git a/opentelemetry-exporter-gcp-logging/src/opentelemetry/exporter/cloud_logging/__init__.py b/opentelemetry-exporter-gcp-logging/src/opentelemetry/exporter/cloud_logging/__init__.py index e8349805..a215e02c 100644 --- a/opentelemetry-exporter-gcp-logging/src/opentelemetry/exporter/cloud_logging/__init__.py +++ b/opentelemetry-exporter-gcp-logging/src/opentelemetry/exporter/cloud_logging/__init__.py @@ -197,13 +197,14 @@ def export(self, batch: Sequence[LogData]): project_id = str( attributes.get(PROJECT_ID_ATTRIBUTE_KEY, self.project_id) ) - log_suffix = urllib.parse.quote_plus( - str( - attributes.get( - LOG_NAME_ATTRIBUTE_KEY, self.default_log_name - ) + log_suffix = self.default_log_name + log_name_attr = attributes.get(LOG_NAME_ATTRIBUTE_KEY) + if log_name_attr and isinstance(log_name_attr, str): + log_suffix = urllib.parse.quote_plus(log_name_attr) + elif log_record.event_name: + log_suffix = urllib.parse.quote_plus( + log_record.event_name.replace(".", "_") ) - ) log_entry.log_name = f"projects/{project_id}/logs/{log_suffix}" # If timestamp is unset fall back to observed_time_unix_nano as recommended, # see https://github.com/open-telemetry/opentelemetry-proto/blob/4abbb78/opentelemetry/proto/logs/v1/logs.proto#L176-L179 diff --git a/opentelemetry-exporter-gcp-logging/tests/__snapshots__/test_cloud_logging/test_convert_otlp_dict_body.json b/opentelemetry-exporter-gcp-logging/tests/__snapshots__/test_cloud_logging/test_convert_otlp_dict_body.json index 9a61a846..a026b7d5 100644 --- a/opentelemetry-exporter-gcp-logging/tests/__snapshots__/test_cloud_logging/test_convert_otlp_dict_body.json +++ b/opentelemetry-exporter-gcp-logging/tests/__snapshots__/test_cloud_logging/test_convert_otlp_dict_body.json @@ -25,7 +25,7 @@ "gen_ai.system": "true", "test": "23" }, - "logName": "projects/fakeproject/logs/test", + "logName": "projects/fakeproject/logs/random_genai_event", "resource": { "labels": { "location": "global", diff --git a/opentelemetry-exporter-gcp-logging/tests/test_cloud_logging.py b/opentelemetry-exporter-gcp-logging/tests/test_cloud_logging.py index d8480dad..07f36903 100644 --- a/opentelemetry-exporter-gcp-logging/tests/test_cloud_logging.py +++ b/opentelemetry-exporter-gcp-logging/tests/test_cloud_logging.py @@ -74,6 +74,7 @@ def test_convert_otlp_dict_body( log_data = [ LogData( log_record=LogRecord( + event_name="random.genai.event", timestamp=1736976310997977393, severity_number=SeverityNumber(20), trace_id=25,