Django logger не регистрирует ошибку в журнальном файле
Привет всем Я столкнулся с проблемами с логированием в django. Он не регистрирует ошибки в моем файле django.log. Ниже приведен код, который я использую в views.py :-
import logging
logger = logging.getLogger(__name__)
class SomeView(CreateAPIView):
serializer_class = some_class
queryset = models.model_name.objects
def create(self, request, *args, **kwargs):
try:
some_code
try:
some_more_code
except Exception as e:
logger.error(e, exc_info=True)
print(e)
except:
pass
return 1
Это работает, а внутренний блок выводит ошибку. Затем в settings.py
import logging
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
},
},
'handlers': {
'file': {
'level': 'ERROR',
'class': 'logging.FileHandler',
'filename': 'django.log',
'formatter': 'verbose'
},
'console': {
'level': 'ERROR',
'class': 'logging.StreamHandler',
'formatter': 'verbose'
},
},
'loggers': {
'django': {
'handlers': ['file', 'console'],
'level': 'ERROR',
'propagate': True,
},
},
}
Это создает файл django.log, но я не вижу ошибок в файлах django.log, когда я вызываю ошибку. Кто-нибудь может мне помочь. Я использую pycharm, который показывает, что формат журнала не распознан, если это вам поможет
Есть несколько вещей, которые можно попробовать для устранения этой проблемы:
Убедитесь, что файл django.log имеет правильные разрешения, чтобы в него можно было писать. Вы можете проверить права доступа к файлу, выполнив команду ls -l в терминале.
Убедитесь, что раздел loggers в настройках LOGGING настроен правильно. Логгер 'django' должен иметь "обработчики", установленные на ['file', 'console'] и "уровень", установленный на 'ERROR'.
Убедитесь, что вы правильно используете объект logger в своем представлении. Вы должны вызвать метод error на объекте logger и передать сообщение об ошибке в качестве аргумента, например, так: logger.error(e). Также следует удалить аргумент exc_info=True, так как он не нужен для регистрации ошибок.
Если вы все еще не видите сообщений об ошибках в файле django.log, вы можете попробовать установить параметр 'propagate' на False в логгере 'django'. Это предотвратит распространение сообщений об ошибках в родительский логгер, что может быть причиной фильтрации сообщений.
Если вы используете PyCharm и видите ошибку "формат журнала не распознан", это может быть связано с проблемой форматирования сообщений журнала в настройках LOGGING. Убедитесь, что 'format' в форматере 'verbose' правильно отформатирован в соответствии с документацией по логированию в Python.
Надеюсь, эти рекомендации помогут вам решить проблему.
Привет всем, я думаю, что нашел ответ. проблема была связана с логгером, определенным как logger = logging.getLogger(name). когда я заменил его на logger = logging.getLogger('django'), он начал вести журнал правильно