Ведение журнала не запись сообщений журнала в файл журнала, а печать на консоли - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь изучить модуль логирования в Django. Я хочу записывать исключения в файл журнала, чтобы видеть их позже. Печать сообщений журнала на консоли работает нормально, но я не могу записать те же сообщения журнала в файл журнала. Ниже мой код.

My settings.py

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

My views.py

def Helloworld(request):
    try:
        s = HttpResponse("this is life")
        logging.debug("this is debug log - in hw page")
        logging.critical("this is critical log - in hw page")   
        logging.error("this is error log - in hw page")
    except Exception as e:
        print(e)
        logging.critical("this is critical log - in hw page - exception")
        logging.exception(e)
    return s

My console output

Django version 3.0.6, using settings 'project.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
CRITICAL:root:this is critical log - in hw page
ERROR:root:this is error log - in hw page
INFO:django.server:"GET /hw HTTP/1.1" 200 12

My вывод файла журнала

Watching for file changes with StatReloader
"GET /hw HTTP/1.1" 200 12
C:\Users\....\views.py changed, reloading.

    Watching for file changes with StatReloader
    Watching for file changes with StatReloader
    "GET /hw HTTP/1.1" 200 12
    "GET /hw HTTP/1.1" 200 12
    C:\Users\...\views.py changed, reloading.
    Watching for file changes with StatReloader
    C:\Users\...\views.py changed, reloading.
    Watching for file changes with StatReloader
    "GET /hw HTTP/1.1" 200 12

My Urls.py

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url('', include(router.urls)),
    url(r'^hw$', Helloworld),
    url('__debug__/', include(debug_toolbar.urls)),
]+ static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) 

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

1 Ответ

0 голосов
/ 28 мая 2020

Моя конфигурация ведения журнала в settings.py была неправильной. Правильная конфигурация указана ниже.

LOGGING = {
    'version': 1,
    'formatters': {
         'standard': {
             'format': '%(asctime)s %(levelname)s %(name)s %(message)s'
         },
     },
    'loggers': {
        '':{
            'handlers': ['file'] ,
            'level':'DEBUG'
        }
    },
    'handlers':{
        'file':{
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': 'debug.log',
            'formatter': 'standard'
        }
    }
}
...