Skip to content

Commit cf863bf

Browse files
committed
Addressing comments
1 parent 53c085b commit cf863bf

File tree

5 files changed

+53
-60
lines changed

5 files changed

+53
-60
lines changed

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

Lines changed: 45 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
)
4040
from opentelemetry.attributes import _VALID_ANY_VALUE_TYPES, BoundedAttributes
4141
from opentelemetry.context import get_current
42+
from opentelemetry.context.context import Context
4243
from opentelemetry.sdk.environment_variables import (
4344
OTEL_ATTRIBUTE_COUNT_LIMIT,
4445
OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT,
@@ -53,7 +54,7 @@
5354
format_span_id,
5455
format_trace_id,
5556
)
56-
from opentelemetry.util.types import _ExtendedAttributes
57+
from opentelemetry.util.types import AnyValue, _ExtendedAttributes
5758

5859
_DEFAULT_OTEL_ATTRIBUTE_COUNT_LIMIT = 128
5960
_ENV_VALUE_UNSET = ""
@@ -249,46 +250,6 @@ def __eq__(self, other: object) -> bool:
249250
return NotImplemented
250251
return self.__dict__ == other.__dict__
251252

252-
def to_json(self, indent: int | None = 4) -> str:
253-
return json.dumps(
254-
{
255-
"body": self.log_record.body,
256-
"severity_number": self.log_record.severity_number.value
257-
if self.log_record.severity_number is not None
258-
else None,
259-
"severity_text": self.log_record.severity_text,
260-
"attributes": (
261-
dict(self.log_record.attributes)
262-
if bool(self.log_record.attributes)
263-
else None
264-
),
265-
"dropped_attributes": self.dropped_attributes,
266-
"timestamp": ns_to_iso_str(self.log_record.timestamp)
267-
if self.log_record.timestamp is not None
268-
else None,
269-
"observed_timestamp": ns_to_iso_str(
270-
self.log_record.observed_timestamp
271-
),
272-
"trace_id": (
273-
f"0x{format_trace_id(self.log_record.trace_id)}"
274-
if self.log_record.trace_id is not None
275-
else ""
276-
),
277-
"span_id": (
278-
f"0x{format_span_id(self.log_record.span_id)}"
279-
if self.log_record.span_id is not None
280-
else ""
281-
),
282-
"trace_flags": self.log_record.trace_flags,
283-
"resource": json.loads(self.resource.to_json()),
284-
"event_name": self.log_record.event_name
285-
if self.log_record.event_name
286-
else "",
287-
},
288-
indent=indent,
289-
cls=BytesEncoder,
290-
)
291-
292253
@property
293254
def dropped_attributes(self) -> int:
294255
if isinstance(self.log_record.attributes, BoundedAttributes):
@@ -513,8 +474,8 @@ class LoggingHandler(logging.Handler):
513474

514475
def __init__(
515476
self,
516-
level=logging.NOTSET,
517-
logger_provider=None,
477+
level: int = logging.NOTSET,
478+
logger_provider: APILoggerProvider | None = None,
518479
) -> None:
519480
super().__init__(level=level)
520481
self._logger_provider = logger_provider or get_logger_provider()
@@ -606,11 +567,11 @@ def flush(self) -> None:
606567
Flushes the logging output. Skip flushing if logging_provider has no force_flush method.
607568
"""
608569
if hasattr(self._logger_provider, "force_flush") and callable(
609-
self._logger_provider.force_flush
570+
self._logger_provider.force_flush # type: ignore[reportAttributeAccessIssue]
610571
):
611572
# This is done in a separate thread to avoid a potential deadlock, for
612573
# details see https://github.com/open-telemetry/opentelemetry-python/pull/4636.
613-
thread = threading.Thread(target=self._logger_provider.force_flush)
574+
thread = threading.Thread(target=self._logger_provider.force_flush) # type: ignore[reportAttributeAccessIssue]
614575
thread.start()
615576

616577

@@ -639,20 +600,51 @@ def resource(self):
639600
return self._resource
640601

641602
# pylint: disable=arguments-differ
642-
def emit(self, record: LogRecord):
603+
def emit(
604+
self,
605+
record: LogRecord | None = None,
606+
*,
607+
timestamp: int | None = None,
608+
observed_timestamp: int | None = None,
609+
context: Context | None = None,
610+
severity_number: SeverityNumber | None = None,
611+
severity_text: str | None = None,
612+
body: AnyValue | None = None,
613+
attributes: _ExtendedAttributes | None = None,
614+
event_name: str | None = None,
615+
) -> None:
643616
"""Emits the :class:`ReadWriteLogRecord` by setting instrumentation scope
644617
and forwarding to the processor.
645618
"""
646-
writable_record: ReadWriteLogRecord
647-
if not isinstance(record, ReadWriteLogRecord):
648-
# pylint:disable=protected-access
619+
# If a record is provided, use it directly
620+
if record is not None:
621+
if not isinstance(record, ReadWriteLogRecord):
622+
# pylint:disable=protected-access
623+
writable_record = ReadWriteLogRecord._from_api_log_record(
624+
record=record,
625+
resource=self._resource,
626+
instrumentation_scope=self._instrumentation_scope,
627+
)
628+
else:
629+
writable_record = record
630+
else:
631+
# Create a record from individual parameters
632+
log_record = LogRecord(
633+
timestamp=timestamp,
634+
observed_timestamp=observed_timestamp,
635+
context=context,
636+
severity_number=severity_number,
637+
severity_text=severity_text,
638+
body=body,
639+
attributes=attributes,
640+
event_name=event_name,
641+
)
649642
writable_record = ReadWriteLogRecord._from_api_log_record(
650-
record=record,
643+
record=log_record,
651644
resource=self._resource,
652645
instrumentation_scope=self._instrumentation_scope,
653646
)
654-
else:
655-
writable_record = record
647+
656648
self._multi_log_record_processor.on_emit(writable_record)
657649

658650

@@ -724,7 +716,7 @@ def get_logger(
724716
version: str | None = None,
725717
schema_url: str | None = None,
726718
attributes: _ExtendedAttributes | None = None,
727-
) -> Logger:
719+
) -> APILogger:
728720
if self._disabled:
729721
return NoOpLogger(
730722
name,

opentelemetry-sdk/src/opentelemetry/sdk/util/instrumentation.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
from typing_extensions import deprecated
1818

1919
from opentelemetry.attributes import BoundedAttributes
20-
from opentelemetry.util.types import Attributes
20+
from opentelemetry.util.types import Attributes, _ExtendedAttributes
2121

2222

2323
class InstrumentationInfo:
@@ -94,7 +94,7 @@ def __init__(
9494
name: str,
9595
version: Optional[str] = None,
9696
schema_url: Optional[str] = None,
97-
attributes: Optional[Attributes] = None,
97+
attributes: Optional[_ExtendedAttributes] = None,
9898
) -> None:
9999
self._name = name
100100
self._version = version

opentelemetry-sdk/tests/logs/test_export.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
from opentelemetry.sdk._logs import (
2929
LoggerProvider,
3030
LoggingHandler,
31+
ReadableLogRecord,
3132
ReadWriteLogRecord,
3233
)
3334
from opentelemetry.sdk._logs._internal.export import _logger
@@ -628,7 +629,7 @@ def test_export(self): # pylint: disable=no-self-use
628629
)
629630
)
630631
)
631-
log_record = ReadWriteLogRecord(
632+
log_record = ReadableLogRecord(
632633
LogRecord(
633634
timestamp=int(time.time() * 1e9),
634635
context=ctx,

opentelemetry-sdk/tests/logs/test_log_record.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
from opentelemetry.sdk._logs import (
2323
LogDroppedAttributesWarning,
2424
LogLimits,
25+
ReadableLogRecord,
2526
ReadWriteLogRecord,
2627
)
2728
from opentelemetry.sdk.resources import Resource
@@ -30,7 +31,7 @@
3031

3132
class TestLogRecord(unittest.TestCase):
3233
def test_log_record_to_json(self):
33-
log_record = ReadWriteLogRecord(
34+
log_record = ReadableLogRecord(
3435
LogRecord(
3536
timestamp=0,
3637
observed_timestamp=0,
@@ -52,7 +53,7 @@ def test_log_record_to_json(self):
5253
)
5354

5455
def test_log_record_to_json_serializes_severity_number_as_int(self):
55-
actual = ReadWriteLogRecord(
56+
actual = ReadableLogRecord(
5657
LogRecord(
5758
timestamp=0,
5859
severity_number=SeverityNumber.WARN,
@@ -66,7 +67,7 @@ def test_log_record_to_json_serializes_severity_number_as_int(self):
6667
self.assertEqual(SeverityNumber.WARN.value, decoded["severity_number"])
6768

6869
def test_log_record_to_json_serializes_null_severity_number(self):
69-
actual = ReadWriteLogRecord(
70+
actual = ReadableLogRecord(
7071
LogRecord(
7172
observed_timestamp=0,
7273
body="a log line",

pyproject.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,6 @@ include = [
111111
exclude = [
112112
"opentelemetry-sdk/tests",
113113
"opentelemetry-sdk/src/opentelemetry/sdk/_events",
114-
"opentelemetry-sdk/src/opentelemetry/sdk/_logs",
115114
"opentelemetry-sdk/src/opentelemetry/sdk/error_handler",
116115
"opentelemetry-sdk/src/opentelemetry/sdk/metrics",
117116
"opentelemetry-sdk/src/opentelemetry/sdk/trace/export",

0 commit comments

Comments
 (0)