Skip to content

Commit bfb61df

Browse files
authored
Modify logic for message body on Microsoft.ApplicationInsights.MessageData to include default message for messages with empty body and export logs (#43091)
* Modify logic in PR (#43060) to include default message for messages with empty body and export logs * Update CHANGELOG * Update logic as per updated spec * Addressed comments
1 parent ad4ae74 commit bfb61df

File tree

4 files changed

+33
-2
lines changed

4 files changed

+33
-2
lines changed

sdk/monitor/azure-monitor-opentelemetry-exporter/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
### Breaking Changes
88

99
### Bugs Fixed
10+
- Modified logic for message body on Microsoft.ApplicationInsights.MessageData to include default message for messages with empty body and export logs
11+
([#43091](https://github.com/Azure/azure-sdk-for-python/pull/43091))
1012

1113
### Other Changes
1214

sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/_constants.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -326,4 +326,7 @@ class _RP_Names(Enum):
326326

327327
_DEFAULT_AAD_SCOPE = "https://monitor.azure.com//.default"
328328

329+
# Default message for messages(MessageData) with empty body
330+
_DEFAULT_LOG_MESSAGE = "n/a"
331+
329332
# cSpell:disable

sdk/monitor/azure-monitor-opentelemetry-exporter/azure/monitor/opentelemetry/exporter/export/logs/_exporter.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
from azure.monitor.opentelemetry.exporter._constants import (
1919
_EXCEPTION_ENVELOPE_NAME,
2020
_MESSAGE_ENVELOPE_NAME,
21+
_DEFAULT_LOG_MESSAGE,
2122
)
2223
from azure.monitor.opentelemetry.exporter._generated.models import (
2324
ContextTagKeys,
@@ -189,6 +190,9 @@ def _convert_log_to_envelope(log_data: LogData) -> TelemetryItem:
189190
severity_level=severity_level, # type: ignore
190191
properties=properties,
191192
)
193+
data.message = data.message.strip()
194+
if len(data.message) == 0:
195+
data.message = _DEFAULT_LOG_MESSAGE
192196
envelope.data = MonitorBase(base_data=data, base_type="MessageData")
193197

194198
return envelope

sdk/monitor/azure-monitor-opentelemetry-exporter/tests/logs/test_logs.py

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
from azure.monitor.opentelemetry.exporter._constants import (
3030
_APPLICATION_INSIGHTS_EVENT_MARKER_ATTRIBUTE,
3131
_MICROSOFT_CUSTOM_EVENT_NAME,
32+
_DEFAULT_LOG_MESSAGE,
3233
)
3334
from azure.monitor.opentelemetry.exporter._generated.models import ContextTagKeys
3435
from azure.monitor.opentelemetry.exporter._utils import (
@@ -132,6 +133,20 @@ def setUpClass(cls):
132133
),
133134
InstrumentationScope("test_name"),
134135
)
136+
cls._log_data_empty_with_whitespaces = _logs.LogData(
137+
_logs.LogRecord(
138+
timestamp=1646865018558419456,
139+
trace_id=125960616039069540489478540494783893221,
140+
span_id=2909973987304607650,
141+
severity_text="WARNING",
142+
trace_flags=None,
143+
severity_number=SeverityNumber.WARN,
144+
body=" ",
145+
resource=Resource.create(attributes={"asd": "test_resource"}),
146+
attributes={"test": "attribute"},
147+
),
148+
InstrumentationScope("test_name"),
149+
)
135150
cls._log_data_event = _logs.LogData(
136151
_logs.LogRecord(
137152
timestamp=1646865018558419456,
@@ -410,14 +425,21 @@ def test_log_to_envelope_log_none(self):
410425
envelope = exporter._log_to_envelope(self._log_data_none)
411426
self.assertEqual(envelope.name, "Microsoft.ApplicationInsights.Message")
412427
self.assertEqual(envelope.data.base_type, "MessageData")
413-
self.assertEqual(envelope.data.base_data.message, "")
428+
self.assertEqual(envelope.data.base_data.message, _DEFAULT_LOG_MESSAGE)
414429

415430
def test_log_to_envelope_log_empty(self):
416431
exporter = self._exporter
417432
envelope = exporter._log_to_envelope(self._log_data_empty)
418433
self.assertEqual(envelope.name, "Microsoft.ApplicationInsights.Message")
419434
self.assertEqual(envelope.data.base_type, "MessageData")
420-
self.assertEqual(envelope.data.base_data.message, "")
435+
self.assertEqual(envelope.data.base_data.message, _DEFAULT_LOG_MESSAGE)
436+
437+
def test_log_to_envelope_log_empty_with_whitespaces(self):
438+
exporter = self._exporter
439+
envelope = exporter._log_to_envelope(self._log_data_empty_with_whitespaces)
440+
self.assertEqual(envelope.name, "Microsoft.ApplicationInsights.Message")
441+
self.assertEqual(envelope.data.base_type, "MessageData")
442+
self.assertEqual(envelope.data.base_data.message, _DEFAULT_LOG_MESSAGE)
421443

422444
def test_log_to_envelope_log_complex_body(self):
423445
exporter = self._exporter

0 commit comments

Comments
 (0)