beamlit 0.0.34rc54__py3-none-any.whl → 0.0.34rc55__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,12 @@
|
|
1
|
+
import logging
|
1
2
|
from typing import Any
|
2
3
|
|
3
4
|
from fastapi import FastAPI
|
4
|
-
from opentelemetry import metrics, trace
|
5
|
+
from opentelemetry import _logs, metrics, trace
|
6
|
+
from opentelemetry._logs import set_logger_provider
|
7
|
+
from opentelemetry.exporter.otlp.proto.grpc._log_exporter import (
|
8
|
+
OTLPLogExporter,
|
9
|
+
)
|
5
10
|
from opentelemetry.exporter.otlp.proto.grpc.metric_exporter import (
|
6
11
|
OTLPMetricExporter,
|
7
12
|
)
|
@@ -11,6 +16,8 @@ from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import (
|
|
11
16
|
from opentelemetry.instrumentation.fastapi import FastAPIInstrumentor
|
12
17
|
from opentelemetry.instrumentation.httpx import HTTPXClientInstrumentor
|
13
18
|
from opentelemetry.metrics import NoOpMeterProvider
|
19
|
+
from opentelemetry.sdk._logs import LoggerProvider, LoggingHandler
|
20
|
+
from opentelemetry.sdk._logs.export import BatchLogRecordProcessor
|
14
21
|
from opentelemetry.sdk.metrics import MeterProvider
|
15
22
|
from opentelemetry.sdk.metrics.export import PeriodicExportingMetricReader
|
16
23
|
from opentelemetry.sdk.resources import Resource
|
@@ -23,6 +30,7 @@ from .settings import get_settings
|
|
23
30
|
|
24
31
|
tracer: trace.Tracer | None = None
|
25
32
|
meter: metrics.Meter | None = None
|
33
|
+
logger: LoggerProvider | None = None
|
26
34
|
|
27
35
|
|
28
36
|
def get_tracer() -> trace.Tracer:
|
@@ -37,6 +45,12 @@ def get_meter() -> metrics.Meter:
|
|
37
45
|
return meter
|
38
46
|
|
39
47
|
|
48
|
+
def get_logger() -> LoggerProvider:
|
49
|
+
if logger is None:
|
50
|
+
raise Exception("Logger is not initialized")
|
51
|
+
return logger
|
52
|
+
|
53
|
+
|
40
54
|
def get_resource_attributes() -> Dict[str, Any]:
|
41
55
|
resources = Resource.create()
|
42
56
|
resources_dict: Dict[str, Any] = {}
|
@@ -67,12 +81,17 @@ def get_span_exporter() -> OTLPSpanExporter | None:
|
|
67
81
|
return OTLPSpanExporter()
|
68
82
|
|
69
83
|
|
84
|
+
def get_log_exporter() -> OTLPLogExporter | None:
|
85
|
+
settings = get_settings()
|
86
|
+
if not settings.enable_opentelemetry:
|
87
|
+
return None
|
88
|
+
return OTLPLogExporter()
|
89
|
+
|
90
|
+
|
70
91
|
def instrument_app(app: FastAPI):
|
71
92
|
global tracer
|
72
93
|
global meter
|
73
94
|
settings = get_settings()
|
74
|
-
if settings is None:
|
75
|
-
raise Exception("Settings are not initialized")
|
76
95
|
|
77
96
|
if not settings.enable_opentelemetry:
|
78
97
|
# Use NoOp implementations to stub tracing and metrics
|
@@ -111,6 +130,20 @@ def instrument_app(app: FastAPI):
|
|
111
130
|
meter = meter_provider.get_meter(__name__)
|
112
131
|
else:
|
113
132
|
meter = metrics.get_meter(__name__)
|
133
|
+
|
134
|
+
if not isinstance(_logs.get_logger_provider(), LoggerProvider):
|
135
|
+
logger_provider = LoggerProvider()
|
136
|
+
set_logger_provider(logger_provider)
|
137
|
+
logger_provider.add_log_record_processor(
|
138
|
+
BatchLogRecordProcessor(get_log_exporter())
|
139
|
+
)
|
140
|
+
handler = LoggingHandler(
|
141
|
+
level=logging.NOTSET, logger_provider=logger_provider
|
142
|
+
)
|
143
|
+
logging.getLogger().addHandler(handler)
|
144
|
+
else:
|
145
|
+
logger_provider = _logs.get_logger_provider()
|
146
|
+
|
114
147
|
# Only instrument the app when OpenTelemetry is enabled
|
115
148
|
FastAPIInstrumentor.instrument_app(app)
|
116
149
|
HTTPXClientInstrumentor().instrument()
|
@@ -130,7 +130,7 @@ beamlit/authentication/credentials.py,sha256=p_1xenabCbQuRz7BiFk7oTK4uCxAt_zoyku
|
|
130
130
|
beamlit/authentication/device_mode.py,sha256=tmr22gllKOZwBRub_QjF5pYa425x-nE8tQNpZ_EGR6g,3644
|
131
131
|
beamlit/common/__init__.py,sha256=saX5X3hRCJ9erSlXuSkZ2VGgquvpgdcofAU_9sM4bCE,354
|
132
132
|
beamlit/common/error.py,sha256=f9oJDFxhoHK-vpjxBgEp0NwWIk0N_THPemUI7uQxVzU,270
|
133
|
-
beamlit/common/instrumentation.py,sha256=
|
133
|
+
beamlit/common/instrumentation.py,sha256=bW3UN0Ca24zPFZSYjqWkrFfBVDp_yL10T3jVD403KvI,5386
|
134
134
|
beamlit/common/logger.py,sha256=nN_dSOl4bs13QU3Rod-w3e3jYOnlSrHx3_bs-ACY6Aw,1115
|
135
135
|
beamlit/common/secrets.py,sha256=sid81bOe3LflkMKDHwBsBs9nIju8bp5-v9qU9gkyNMc,212
|
136
136
|
beamlit/common/settings.py,sha256=b2rvby-ufG3M0AB1ReoWFM-1EzF1LaE-gbokO9HvQDI,3810
|
@@ -256,6 +256,6 @@ beamlit/serve/app.py,sha256=gYQvUK_S7g0Em-idND8HrVDqgg5LlIemheSGlX2Jj8U,3638
|
|
256
256
|
beamlit/serve/middlewares/__init__.py,sha256=1dVmnOmhAQWvWktqHkKSIX-YoF6fmMU8xkUQuhg_rJU,148
|
257
257
|
beamlit/serve/middlewares/accesslog.py,sha256=Mu4T4_9OvHybjA0ApzZFpgi2C8f3X1NbUk-76v634XM,631
|
258
258
|
beamlit/serve/middlewares/processtime.py,sha256=lDAaIasZ4bwvN-HKHvZpaD9r-yrkVNZYx4abvbjbrCg,411
|
259
|
-
beamlit-0.0.
|
260
|
-
beamlit-0.0.
|
261
|
-
beamlit-0.0.
|
259
|
+
beamlit-0.0.34rc55.dist-info/METADATA,sha256=4yvNNr_yX2lRYsd14PFw8dB6ykRdp1BIBe0lKOeckM4,2344
|
260
|
+
beamlit-0.0.34rc55.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
261
|
+
beamlit-0.0.34rc55.dist-info/RECORD,,
|
File without changes
|