Добавьте метку времени и имя пользователя в лог - PullRequest
1 голос
/ 27 марта 2019

У меня настроено ведение журнала внутри файла settings.py, и я хочу знать, возможно ли добавить его в строку журнала ошибок - у какого пользователя возникла ошибка и временная метка для проблемы. Возможно ли это?

Текущий код

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': 'debug.log',
        },
    },
    'loggers': {
        'django': {
            'handlers': ['file'],
            'level': 'DEBUG',
            'propagate': True,
        },
    },
}

Ответы [ 3 ]

0 голосов
/ 27 марта 2019

Вы можете определить форматер для журнала, например:

'formatters': {
    'verbose': {
        'format': '{levelname} {asctime} {module} {process:d} {thread:d} {message}',
        'style': '{',
    }
},

Чтобы зарегистрировать пользователя, который столкнулся с ошибкой, вам нужно будет ввести имя пользователя в сообщении, например, на ваш взгляд:

def my_view(request):
    logger.error('View error for user {}'.format(request.user.username))
0 голосов
/ 28 марта 2019
'formatters': {
         'verbose': {
            'format': '%(asctime)s; %(name)s] Message "%(message)s" from %
(pathname)s:%(lineno)d in %(funcName)s',
             'datefmt': "%d/%b/%Y %H:%M:%S"
        },
}

Вы можете добавить новый форматер с указанным выше форматом. он должен быть в состоянии записать номер строки. но чтобы регистрировать имя пользователя, я не думаю о других способах, кроме как сделать это вручную.

0 голосов
/ 27 марта 2019

Вы можете добавлять форматеры и использовать их в своих обработчиках. Здесь - это список доступных атрибутов по умолчанию, которые вы можете добавить, например, отметка времени с {asctime}.Чтобы добавить пользователя, вам нужно будет указать его в вызове журнала в качестве дополнительного аргумента, как показано здесь .

LOGGING = {
    'formatters': {
        'timestamp': {
            'format': '{asctime} {levelname} {message}',
            'style': '{',
        },
    },
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
            'formatter': 'timestamp'
        },
    },
    'loggers': {
        'django': {
            'handlers': ['console'],
        },
    },
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...