Я пытаюсь переопределить вывод встроенных регистраторов django из консоли в файл для этой цели в settings.py
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()':'django.utils.log.RequireDebugFalse',
},
'require_debug_true':{
'()':'django.utils.log.RequireDebugTrue',
},
},
'handlers': {
'console': {
'level': 'INFO',
'filters': ['require_debug_true'],
'class': 'logging.StreamHandler',
},
'null': {
'class': 'logging.NullHandler',
},
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'django.utils.log.AdminEmailHandler'
},
'file': {
'level':'DEBUG',
'class':'logging.FileHandler',
'filename':os.path.join(BASE_DIR,'logs/log')
}
},
'loggers': {
'django': {
'handlers': ['file'],
},
'django.request': {
'handlers': ['file'],
'level': 'ERROR',
'propagate': False,
},
'django.security': {
'handlers': ['file'],
'level': 'ERROR',
'propagate': False,
},
'py.warnings': {
'handlers': ['console','file'],
},
}
}
для тестирования вывода, который я создал в файле views.py
, в следующем view
import logging
from django.http import HttpResponse
logger = logging.getLogger(__name__)
def main_view(request):
logger.error('Test Error')
logger.warning('Test warning')
logger.info('Test Info')
logger.debug('Test Debug')
logger.critical('Test critical')
return HttpResponse('Hello')
Вышеуказанная настройка для главной страницы. После запуска сервера python manage.py runserver
и посещения главной страницы http://127.0.0.1:8000
я вижу в консоли
(env) $ python manage.py runserver
Performing system checks...
System check identified no issues (0 silenced).
February 20, 2020 - 12:58:40
Django version 3.0.1, using settings 'authexample.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Test Error
Test warning
Test critical
Я не ожидал, что Test Error, Test Warning и Test fritical появятся в консоли, потому что я переопределяю их вывод в файл , В указанном файле журнала появляется следующее
Watching for file changes with StatReloader
"GET / HTTP/1.1" 200 5
Но я ожидал, что определено в файле views.py
logger.error('Test Error')
logger.warning('Test warning')
logger.info('Test Info')
logger.debug('Test Debug')
logger.critical('Test critical')
Появляется в файле журнала. Что я делаю не так ?? Кто-нибудь может направить меня