Skip to content

Commit aca812a

Browse files
committed
DROP events sdk
1 parent fab4e9e commit aca812a

File tree

2 files changed

+86
-0
lines changed

2 files changed

+86
-0
lines changed

pyproject.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ distro = "elasticotel.distro:ElasticOpenTelemetryDistro"
4848
process_runtime = "elasticotel.sdk.resources:ProcessRuntimeResourceDetector"
4949
telemetry_distro = "elasticotel.sdk.resources:TelemetryDistroResourceDetector"
5050

51+
[project.entry-points.opentelemetry_event_logger_provider]
52+
default_event_logger_provider = "opentelemetry._events:NoOpEventLoggerProvider"
53+
sdk_event_logger_provider = "opentelemetry.sdk._events:EventLoggerProvider"
54+
5155
[project.readme]
5256
file = "README.md"
5357
content-type = "text/markdown"
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
# Copyright The OpenTelemetry Authors
2+
#
3+
# Licensed under the Apache License, Version 2.0 (the "License");
4+
# you may not use this file except in compliance with the License.
5+
# You may obtain a copy of the License at
6+
#
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
#
9+
# Unless required by applicable law or agreed to in writing, software
10+
# distributed under the License is distributed on an "AS IS" BASIS,
11+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
# See the License for the specific language governing permissions and
13+
# limitations under the License.
14+
import logging
15+
from time import time_ns
16+
from typing import Optional
17+
18+
from opentelemetry import trace
19+
from opentelemetry._events import Event
20+
from opentelemetry._events import EventLogger as APIEventLogger
21+
from opentelemetry._events import EventLoggerProvider as APIEventLoggerProvider
22+
from opentelemetry._logs import SeverityNumber, get_logger_provider
23+
from opentelemetry.sdk._logs import Logger, LoggerProvider, LogRecord
24+
from opentelemetry.util.types import Attributes
25+
26+
_logger = logging.getLogger(__name__)
27+
28+
29+
class EventLogger(APIEventLogger):
30+
def __init__(
31+
self,
32+
logger_provider: LoggerProvider,
33+
name: str,
34+
version: Optional[str] = None,
35+
schema_url: Optional[str] = None,
36+
attributes: Optional[Attributes] = None,
37+
):
38+
super().__init__(
39+
name=name,
40+
version=version,
41+
schema_url=schema_url,
42+
attributes=attributes,
43+
)
44+
self._logger: Logger = logger_provider.get_logger(name, version, schema_url, attributes)
45+
46+
def emit(self, event: Event) -> None:
47+
span_context = trace.get_current_span().get_span_context()
48+
log_record = LogRecord(
49+
timestamp=event.timestamp or time_ns(),
50+
observed_timestamp=None,
51+
trace_id=event.trace_id or span_context.trace_id,
52+
span_id=event.span_id or span_context.span_id,
53+
trace_flags=event.trace_flags or span_context.trace_flags,
54+
severity_text=None,
55+
severity_number=event.severity_number or SeverityNumber.INFO,
56+
body=event.body,
57+
resource=getattr(self._logger, "resource", None),
58+
attributes=event.attributes,
59+
)
60+
self._logger.emit(log_record)
61+
62+
63+
class EventLoggerProvider(APIEventLoggerProvider):
64+
def __init__(self, logger_provider: Optional[LoggerProvider] = None):
65+
self._logger_provider = logger_provider or get_logger_provider()
66+
67+
def get_event_logger(
68+
self,
69+
name: str,
70+
version: Optional[str] = None,
71+
schema_url: Optional[str] = None,
72+
attributes: Optional[Attributes] = None,
73+
) -> EventLogger:
74+
if not name:
75+
_logger.warning("EventLogger created with invalid name: %s", name)
76+
return EventLogger(self._logger_provider, name, version, schema_url, attributes)
77+
78+
def shutdown(self):
79+
self._logger_provider.shutdown()
80+
81+
def force_flush(self, timeout_millis: int = 30000) -> bool:
82+
self._logger_provider.force_flush(timeout_millis)

0 commit comments

Comments
 (0)