如何将额外的参数传递给Django日志格式化程序

时间:2018-11-13 21:23:01

标签: python django logging

我正在尝试执行以下操作:

    # settings.py
    'json': {
        'format': 'Avails: {"levelname": "%(levelname)s", "asctime": "%(asctime)s", "funcName": "%(funcName)s", "filename": "%(filename)s", "lineno": "%(lineno)s", "message": "%(message)s"}',
    },

在视图中:

log.info('this is my message', extra={'user': request.user}

我将如何在日志格式化程序中获取extra信息?

1 个答案:

答案 0 :(得分:1)

extra中的用户可以添加为日志记录json格式器中的

'json': {
    'format': (
        'Avails: {'
            '"levelname": "%(levelname)s",'
            '"asctime": "%(asctime)s",'
            '"funcName": "%(funcName)s",'
            '"filename": "%(filename)s",'
            '"lineno": "%(lineno)s",'
            '"message": "%(message)s",' 
            '"user": "%(user)s"'
        '}',
    )
},

请注意,您需要在其他选项中为用户而不是用户对象传递字符串值。如果这不是字符串对象,则传递的对象的__repr____str__值将替换格式字符串中的相应转换规范。

log.info('this was your message :D', extra={'user': request.user.pk}