Переопределение вывода встроенных регистраторов из консоли в файл - PullRequest
0 голосов
/ 20 февраля 2020

Я пытаюсь переопределить вывод встроенных регистраторов 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') 

Появляется в файле журнала. Что я делаю не так ?? Кто-нибудь может направить меня

...