| """ |
| Custom logging formatters for PyRunner. |
| """ |
| import json |
| import logging |
| from datetime import datetime |
|
|
|
|
| class JsonFormatter(logging.Formatter): |
| """ |
| Format log records as JSON for easier parsing. |
| """ |
|
|
| def format(self, record: logging.LogRecord) -> str: |
| log_entry = { |
| "timestamp": datetime.fromtimestamp(record.created).isoformat(), |
| "level": record.levelname, |
| "logger": record.name, |
| "message": record.getMessage(), |
| "module": record.module, |
| "function": record.funcName, |
| "line": record.lineno, |
| } |
|
|
| |
| if record.exc_info: |
| log_entry["exception"] = self.formatException(record.exc_info) |
|
|
| return json.dumps(log_entry) |
|
|