aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site/apps/api/dblogger.py
diff options
context:
space:
mode:
Diffstat (limited to 'pydis_site/apps/api/dblogger.py')
-rw-r--r--pydis_site/apps/api/dblogger.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/pydis_site/apps/api/dblogger.py b/pydis_site/apps/api/dblogger.py
new file mode 100644
index 00000000..f133832a
--- /dev/null
+++ b/pydis_site/apps/api/dblogger.py
@@ -0,0 +1,22 @@
+from logging import LogRecord, StreamHandler
+
+
+class DatabaseLogHandler(StreamHandler):
+ """Logs entries into the database."""
+
+ def emit(self, record: LogRecord):
+ """Write the given `record` into the database."""
+ # This import needs to be deferred due to Django's application
+ # registry instantiation logic loading this handler before the
+ # application is ready.
+ from pydis_site.apps.api.models.log_entry import LogEntry
+
+ entry = LogEntry(
+ application='site',
+ logger_name=record.name,
+ level=record.levelname.lower(),
+ module=record.module,
+ line=record.lineno,
+ message=self.format(record)
+ )
+ entry.save()