Files
HangmanLab.Backend/logging_handlers/DatabaseLogHandler.py
2024-12-03 16:36:32 +00:00

23 lines
851 B
Python

#logging_handlers/DatabaseLogHandler.py
import logging
from db import get_db
from db.models.Log import Log
from contexts.RequestContext import RequestContext
class DatabaseLogHandler(logging.Handler):
def __init__(self, application="backend"):
super().__init__()
self.application = application
def emit(self, record):
message = self.format(record)
level = record.levelname
extra = str(getattr(record, 'extra', None)) if hasattr(record, 'extra') else None
log_entry = Log(message=message, level=level, application=self.application, extra=extra)
print(message)
try:
with get_db() as db:
db.add(log_entry)
db.commit()
RequestContext.set_error_id(log_entry.id)
except Exception:
print(f"failed to log")