4242from opentelemetry .attributes import _VALID_ANY_VALUE_TYPES , BoundedAttributes
4343from opentelemetry .context import get_current
4444from opentelemetry .context .context import Context
45+ from opentelemetry .metrics import MeterProvider , get_meter_provider
46+ from opentelemetry .sdk ._logs ._internal ._logger_metrics import LoggerMetrics
4547from opentelemetry .sdk .environment_variables import (
4648 OTEL_ATTRIBUTE_COUNT_LIMIT ,
4749 OTEL_ATTRIBUTE_VALUE_LENGTH_LIMIT ,
@@ -638,6 +640,8 @@ def __init__(
638640 ConcurrentMultiLogRecordProcessor ,
639641 ],
640642 instrumentation_scope : InstrumentationScope ,
643+ * ,
644+ logger_metrics : LoggerMetrics ,
641645 ):
642646 super ().__init__ (
643647 instrumentation_scope .name ,
@@ -648,6 +652,7 @@ def __init__(
648652 self ._resource = resource
649653 self ._multi_log_record_processor = multi_log_record_processor
650654 self ._instrumentation_scope = instrumentation_scope
655+ self ._logger_metrics = logger_metrics
651656
652657 @property
653658 def resource (self ):
@@ -700,6 +705,7 @@ def emit(
700705 instrumentation_scope = self ._instrumentation_scope ,
701706 )
702707
708+ self ._logger_metrics .emit_log ()
703709 self ._multi_log_record_processor .on_emit (writable_record )
704710
705711
@@ -711,6 +717,8 @@ def __init__(
711717 multi_log_record_processor : SynchronousMultiLogRecordProcessor
712718 | ConcurrentMultiLogRecordProcessor
713719 | None = None ,
720+ * ,
721+ meter_provider : MeterProvider | None = None ,
714722 ):
715723 if resource is None :
716724 self ._resource = Resource .create ({})
@@ -719,6 +727,9 @@ def __init__(
719727 self ._multi_log_record_processor = (
720728 multi_log_record_processor or SynchronousMultiLogRecordProcessor ()
721729 )
730+ self ._logger_metrics = LoggerMetrics (
731+ meter_provider or get_meter_provider ()
732+ )
722733 disabled = environ .get (OTEL_SDK_DISABLED , "" )
723734 self ._disabled = disabled .lower ().strip () == "true"
724735 self ._at_exit_handler = None
@@ -747,6 +758,7 @@ def _get_logger_no_cache(
747758 schema_url ,
748759 attributes ,
749760 ),
761+ logger_metrics = self ._logger_metrics ,
750762 )
751763
752764 def _get_logger_cached (
0 commit comments