Skip to content

Commit

Permalink
add entry point for text formatted logs
Browse files Browse the repository at this point in the history
  • Loading branch information
mki-c2c committed Feb 6, 2025
1 parent b2355c4 commit 7f2ee82
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 18 deletions.
31 changes: 17 additions & 14 deletions backend/maelstro/logging/psql_logger.py
Original file line number Diff line number Diff line change
Expand Up @@ -90,23 +90,26 @@ def get_logs(size, offset, get_details=False):
]


def format_log(row: Log) -> str:
user = f"{row.first_name} {row.last_name}"
status = "<succes>" if row.status_code == 200 else "<echec> "
operations = (
(["metadata"] if row.copy_meta else [])
+ (["couches"] if row.copy_layers else [])
+ (["styles"] if row.copy_styles else [])
)
source = f'{row.src_name}:{row.dataset_uuid} - "{row.src_title}"'
destination = (
f'{row.dst_name} - "{row.dst_title}" ({", ".join(operations)})'
if operations else "n/a (copy_meta=false, copy_layers=false, copy_styles=false)"
)
return f"[{row.start_time}]: {status} {user} copie {source} vers {destination}"


def format_logs(size, offset):
with Session(get_engine()) as session:
def row_to_copy_operations(row: Log):
return ", ".join(
(["metadata"] if row.copy_meta else [])
+ (["couches"] if row.copy_layers else [])
+ (["styles"] if row.copy_styles else [])
)
return [
(
f"[{row.start_time}]: "
f"<{'succes' if row.status_code == 200 else 'echec '}> "
f"{row.first_name} {row.last_name} "
f'copie {row.src_name} - "{row.src_title}" '
f'vers {row.dst_name} - "{row.dst_title}" '
f"({row_to_copy_operations(row)})"
)
format_log(row)
for row in session.query(Log).order_by(Log.id.desc()).offset(offset).limit(size)
]

Expand Down
20 changes: 16 additions & 4 deletions backend/maelstro/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
from maelstro.metadata import Meta
from maelstro.core import CloneDataset
from maelstro.core.operations import log_handler, setup_exception_handlers
from maelstro.logging.psql_logger import create_db_table, log_request_to_db, get_logs
from maelstro.logging.psql_logger import create_db_table, log_request_to_db, get_logs, format_logs
from maelstro.common.models import SearchQuery


Expand Down Expand Up @@ -165,9 +165,21 @@ def put_dataset_copy(
return PlainTextResponse("\n".join(operations))


@app.get("/logs")
def get_user_logs(size: int = 5, offset: int = 0, get_details: bool = False):
return get_logs(size, offset, get_details)
@app.get(
"/logs",
responses={
200: {"content": {"text/plain": {}, "application/json": {}}},
}
)
def get_user_logs(
size: int = 5,
offset: int = 0,
get_details: bool = False,
accept: Annotated[str, Header(include_in_schema=False)] = "text/plain"
):
if accept == "application/json":
return get_logs(size, offset, get_details)
return PlainTextResponse("\n".join(format_logs(size, offset)))


@app.get("/health")
Expand Down

0 comments on commit 7f2ee82

Please sign in to comment.