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()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: beamlit
3
- Version: 0.0.34rc54
3
+ Version: 0.0.34rc55
4
4
  Summary: Add your description here
5
5
  Author-email: cploujoux <ch.ploujoux@gmail.com>
6
6
  Requires-Python: >=3.12
@@ -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=snsH72EA2_RsM3E9qL9KRiuTSNYGkFKVN3NlGblRogw,4331
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.34rc54.dist-info/METADATA,sha256=Dio5lsBaSZ3GI-top1rPGxCQCkykLx7cgLL274ZimBo,2344
260
- beamlit-0.0.34rc54.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
261
- beamlit-0.0.34rc54.dist-info/RECORD,,
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,,