Skip to content

Commit b6ed8bf

Browse files
a-recknagelArne Caratti
authored and
Arne Caratti
committed
added a straight forward way to exclude LogRecord attributes from being retained
1 parent 82993a3 commit b6ed8bf

File tree

2 files changed

+14
-11
lines changed

2 files changed

+14
-11
lines changed

opentelemetry-sdk/src/opentelemetry/sdk/_logs/_internal/__init__.py

+14-10
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,14 @@
5454

5555
_DEFAULT_OTEL_ATTRIBUTE_COUNT_LIMIT = 128
5656
_ENV_VALUE_UNSET = ""
57+
_PRIVATE_RECORD_ATTRS = {
58+
"args",
59+
"msg",
60+
"message",
61+
"stack_info",
62+
"exc_info",
63+
"exc_text",
64+
}
5765

5866

5967
class LogLimits:
@@ -412,26 +420,22 @@ def __init__(
412420
self,
413421
level=logging.NOTSET,
414422
logger_provider=None,
423+
exclude_attributes=None,
415424
) -> None:
416425
super().__init__(level=level)
417426
self._logger_provider = logger_provider or get_logger_provider()
418427
self._logger = get_logger(
419428
__name__, logger_provider=self._logger_provider
420429
)
430+
if exclude_attributes is None:
431+
exclude_attributes = set()
432+
self.exclude_attributes = _PRIVATE_RECORD_ATTRS | exclude_attributes
421433

422-
@staticmethod
423-
def _get_attributes(record: logging.LogRecord) -> Attributes:
424-
private_record_attrs = (
425-
"args",
426-
"msg",
427-
"stack_info",
428-
"exc_info",
429-
"exc_text",
430-
)
434+
def _get_attributes(self, record: logging.LogRecord) -> Attributes:
431435
attributes = {
432436
k: v
433437
for k, v in vars(record).items()
434-
if k not in private_record_attrs
438+
if k not in self.exclude_attributes
435439
}
436440
if record.exc_info:
437441
exc_type = ""

opentelemetry-sdk/tests/logs/test_handler.py

-1
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,6 @@ def test_original_record_args_are_retained(self):
216216
self.assertEqual(
217217
set(log_record.attributes),
218218
{
219-
"message",
220219
"created",
221220
"filename",
222221
"funcName",

0 commit comments

Comments
 (0)