Skip to content

Commit 82cfcf3

Browse files
committed
:sapling: Add more verbose logs to solution server
Signed-off-by: Fabian von Feilitzsch <[email protected]>
1 parent fa5eeaf commit 82cfcf3

File tree

3 files changed

+208
-13
lines changed

3 files changed

+208
-13
lines changed
Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,32 @@
1-
# TODO: More robust logging
1+
import logging
22
import sys
3+
from datetime import datetime
34
from typing import Any
45

6+
# Configure logging with more detail
7+
logging.basicConfig(
8+
level=logging.INFO,
9+
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
10+
handlers=[
11+
logging.FileHandler("kai_mcp_server.log"),
12+
logging.StreamHandler(sys.stderr),
13+
],
14+
)
15+
16+
logger = logging.getLogger("kai_mcp_solution_server")
17+
18+
# Keep the original log function for compatibility but enhance it
519
log_file = open("stderr.log", "a+")
620
log_file.close()
721

822

923
def log(*args: Any, **kwargs: Any) -> None:
10-
print(*args, file=log_file if not log_file.closed else sys.stderr, **kwargs)
24+
"""Legacy log function - enhanced with timestamp and logging level"""
25+
timestamp = datetime.now().isoformat()
26+
message = " ".join(str(arg) for arg in args)
27+
logger.info(message)
28+
print(
29+
f"[{timestamp}] {message}",
30+
file=log_file if not log_file.closed else sys.stderr,
31+
**kwargs,
32+
)

kai_mcp_solution_server/src/kai_mcp_solution_server/db/dao.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
from __future__ import annotations
22

3+
import logging
34
import sys
45
from datetime import datetime
56
from typing import Any
67

8+
logger = logging.getLogger("kai_mcp_solution_server.db")
9+
710
from sqlalchemy import (
811
ARRAY,
912
JSON,
@@ -308,12 +311,21 @@ class DBSolution(Base):
308311
)
309312

310313
def update_solution_status(self) -> None:
314+
previous_status = self.solution_status
311315
for file in self.after:
312316
if file.status != SolutionStatus.ACCEPTED:
313317
self.solution_status = file.status
318+
if previous_status != self.solution_status:
319+
logger.info(
320+
f"[DB_STATE_CHANGE] Solution {self.id} status auto-updated: {previous_status} -> {self.solution_status} (due to file {file.uri} with status {file.status})"
321+
)
314322
return
315323

316324
self.solution_status = SolutionStatus.ACCEPTED
325+
if previous_status != self.solution_status:
326+
logger.info(
327+
f"[DB_STATE_CHANGE] Solution {self.id} status auto-updated: {previous_status} -> ACCEPTED (all files accepted)"
328+
)
317329

318330
def __hash__(self) -> int:
319331
return hash(self.id)

0 commit comments

Comments
 (0)