23 lines
851 B
Python
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") |