Skip to content

Commit b76c121

Browse files
committed
Added new backend router for logging-related endpoints
1 parent ce6d2fd commit b76c121

File tree

3 files changed

+44
-0
lines changed

3 files changed

+44
-0
lines changed

src/murfey/server/api/logging.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import json
2+
import logging
3+
from datetime import datetime
4+
from typing import Any
5+
6+
from fastapi import APIRouter, Request
7+
8+
logger = logging.getLogger("murfey.server.api.hub")
9+
10+
router = APIRouter(
11+
prefix="/logging",
12+
tags=["Logging"],
13+
)
14+
15+
16+
@router.post("/logs")
17+
async def forward_logs(request: Request):
18+
"""
19+
Receives a list of stringified JSON log records from the instrument server,
20+
unpacks them, and forwards them through the handlers set up on the backend.
21+
"""
22+
23+
data: list[str] = await request.json()
24+
for line in data:
25+
log_data: dict[str, Any] = json.loads(line)
26+
logger_name = log_data["name"]
27+
log_data.pop("msecs", None)
28+
log_data.pop("relativeCreated", None)
29+
client_timestamp = log_data.pop("created", 0)
30+
if client_timestamp:
31+
log_data["client_time"] = datetime.fromtimestamp(
32+
client_timestamp
33+
).isoformat()
34+
log_data["client_host"] = request.client.host if request.client else None
35+
logging.getLogger(logger_name).handle(logging.makeLogRecord(log_data))

src/murfey/server/main.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import murfey.server.api.file_io_instrument
1919
import murfey.server.api.hub
2020
import murfey.server.api.instrument
21+
import murfey.server.api.logging
2122
import murfey.server.api.mag_table
2223
import murfey.server.api.processing_parameters
2324
import murfey.server.api.prometheus
@@ -77,6 +78,8 @@ class Settings(BaseSettings):
7778

7879
app.include_router(murfey.server.api.instrument.router)
7980

81+
app.include_router(murfey.server.api.logging.router)
82+
8083
app.include_router(murfey.server.api.mag_table.router)
8184

8285
app.include_router(murfey.server.api.session_control.router)

src/murfey/util/route_manifest.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -692,6 +692,12 @@ murfey.server.api.instrument.router:
692692
type: int
693693
methods:
694694
- GET
695+
murfey.server.api.logging.router:
696+
- path: /logging/logs
697+
function: forward_logs
698+
path_params: []
699+
methods:
700+
- POST
695701
murfey.server.api.mag_table.router:
696702
- path: /mag_table/mag_table/
697703
function: get_mag_table

0 commit comments

Comments
 (0)