Selise Blocks LMT
Selise Blocks LMT (Logging, Monitoring, and Tracing) library for Selise Blocks applications. It sends logs and traces to Azure Service Bus for centralized processing.
Installation
Using pip:
pip install seliseblocks-lmt
Using uv:
uv add seliseblocks-lmt
Add to pyproject.toml:
[project]
dependencies = [
"seliseblocks-lmt>=0.0.1",
]
Complete Example
import logging
from fastapi import FastAPI, Request
from opentelemetry.instrumentation.fastapi import FastAPIInstrumentor
from blocks_lmt.log_config import configure_logger
from blocks_lmt.tracing import configure_tracing
from blocks_lmt.activity import Activity
app = FastAPI(title="Example Service with LMT")
FastAPIInstrumentor.instrument_app(app)
configure_logger(
x_blocks_key="default-tenant",
blocks_service_id="example-service",
connection_string="Endpoint=sb://your-namespace.servicebus.windows.net/;..."
)
configure_tracing(
x_blocks_key="default-tenant",
blocks_service_id="example-service",
connection_string="Endpoint=sb://your-namespace.servicebus.windows.net/;..."
)
logger = logging.getLogger(__name__)
@app.get("/")
async def root():
logger.info("Root endpoint called")
with Activity.start("handle_root_request") as activity:
activity.set_property("endpoint", "/")
return {"message": "Hello World"}
@app.get("/health")
async def health(request: Request):
logger.info("Health endpoint called")
Activity.set_current_properties({
"http.query": str(dict(request.query_params)),
"http.headers": str(dict(request.headers))
})
return {"status": "healthy"}
Activity API Reference
Context Manager
with Activity.start("operation_name") as activity:
activity.set_property("key", "value")
activity.set_properties({"key1": "val1", "key2": "val2"})
Status Handling
from opentelemetry.trace import StatusCode
Activity.set_current_status(StatusCode.ERROR, "Error message")
Best Practices
- Always instrument FastAPI:
FastAPIInstrumentor.instrument_app(app)
- Use context managers for activities to ensure proper cleanup:
with Activity.start("operation"):
...
- Log inside active spans to maintain trace correlation:
logger.info("This log is trace-correlated")
- Add meaningful properties to activities:
activity.set_property("user_id", user_id)
Dependencies
azure-servicebus = ">=7.14.2"
opentelemetry-api = ">=1.33.1"
opentelemetry-sdk = ">=1.33.1"
opentelemetry-instrumentation-fastapi = ">=0.54b1"
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
seliseblocks_lmt-0.0.4.tar.gz
(49.9 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file seliseblocks_lmt-0.0.4.tar.gz.
File metadata
- Download URL: seliseblocks_lmt-0.0.4.tar.gz
- Upload date:
- Size: 49.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8325a5027a2f1a2f6ad1cd68f3e9a456ed05532fe4c262601719a20dfbf0471f
|
|
| MD5 |
3caad26948ecd0dde919f10559d35b33
|
|
| BLAKE2b-256 |
8272d692264f37eb5a8b24c85a9a89e1955fe1d23beddebf0c4cf8ae9cb05efb
|
File details
Details for the file seliseblocks_lmt-0.0.4-py3-none-any.whl.
File metadata
- Download URL: seliseblocks_lmt-0.0.4-py3-none-any.whl
- Upload date:
- Size: 20.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f905907ba285f97867d3b2d0157c34981bd5e279e35f804e9735babb1b62f612
|
|
| MD5 |
347d6eb46891baf91cbcc5b79afe43ce
|
|
| BLAKE2b-256 |
d71f112b60e4e72c50ce684f5155cb8ca7f6d89f08a868539954a34507f17088
|