我已经创建了一个自定义处理程序和一个模型来将日志保存到数据库中
以下模型日志项在applogger
中的models.py
中定义:
from django.db import models
class LogEntry(models.Model):
time = models.DateTimeField(auto_now_add=True)
level = models.CharField(max_length=10)
message = models.TextField()
我有一个名为applogger
的应用程序,其中有一个日志处理程序handlers.py
:
from logging import Handler
import json, datetime, random
class DBHandler(Handler):
model_name = None
expiry = None
def __init__(self, model="", expiry=0):
super(DBHandler,self).__init__()
self.model_name = model
self.expiry = int(expiry)
def emit(self, record):
# putting a pdb trace
# this is not triggered
import pdb; pdb.set_trace()
try:
# instantiate the model
try:
model = self.get_model(self.model_name)
except:
from .models import LogEntry as model
log_entry = model(level=record.levelname, message=self.format(record))
except:
pass
log_entry.save()
except:
pass
def get_model(self, name):
names = name.split('.')
mod = __import__('.'.join(names[:-1]), fromlist=names[-1:])
return getattr(mod, names[-1])
我已经在我的settings.py
中设置了以下LOGGING
配置
LOGGING = {
"version": 1,
"disable_existing_loggers": False,
"formatters": {
"verbose": {
"format": "{levelname} {asctime} {module} {process:d} {thread:d} {message}",
"style": "{",
},
},
"handlers": {
"log_db": {
"level": "INFO",
"class": "applogger.handlers.DBHandler",
"model": "applogger.models.LogEntry",
"expiry": 86400,
"formatter": "verbose",
},
},
"logger": {
"api": { # I have tried "django" and "api.views" both don't work here
"handlers": ["log_db"],
"level": "INFO",
}
},
}
在api
应用程序中,我有一个views.py
,其中我初始化了记录器,如下所示:
import logging
# instance of the logger
logger = logging.getLogger(__name__)
logger.info('View Initialized')
class Tasks(APIView):
permission_classes = (IsAuthenticated,)
def post(self, request, *args, **kwargs):
...
...
# business logic
if file_object.created_by == request.user:
file_object.save()
logger.info(
f"REQUEST USER: {request.user}"
)
在自定义DBhandler中不会触发pdb.set_trace()
,并且在系统中不会生成任何条目:
如果使用文件处理程序日志记录,则会生成日志
我想出来了。Django框架要求字典具有
'loggers'
,我将其配置为'logger'
。🤦♂️相关问题 更多 >
编程相关推荐