首页 > 解决方案 > 如何在日志处理程序中控制请求对象

问题描述

嗨,我在 django 中制作了一个日志记录模块

我想将所有用户活动保存在class Log模型中

这是日志模型

class Log(models.Model):
    user = models.ForeignKey("user")
    ip_address = models.Charfield()
    visited_view = models.Charfield()

例如,当 user(testman) 访问 PostCreateView 时,Log 对象将创建 ("testman", '[user_ip_address]', 'visited_view')

这是我的settings.py

LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
    'db_logger': {
        'class': 'myapp.utils.logging.LogHandler',
    },
},
'loggers': {
    'request': {
        'handlers': ['db_logger'],
        'level': 'INFO',
    }
},
}

db_logger 将使用 My Custom LogHandler

from myapp.models import Log


class LogHandler(logging.Handler):
    def emit(self, record):
        if record.name.split('.')[0]=='request':
            user = recored.request.user ## This is what i want :)
            Log.objects.create()

并在 CreateView 中插入日志记录命令

my_logger = logging.getLogger('db_logger')

class PostCreateView(CreateView):
    def get_context_data(self, request, *args, **kwargs):
        my_logger.warning('test')

但我现在有大问题,因为logging.Handlerpython lib 不是 django 所以我无法控制请求LogHandler:(

如何在 Handler 中控制请求对象?谢谢你 :)

标签: pythondjango

解决方案


推荐阅读