【问题标题】:Logging not writing logging messages to log file but printing on console记录不将记录消息写入日志文件但在控制台上打印
【发布时间】:2020-05-28 10:04:22
【问题描述】:

我正在尝试学习 Django 中的日志记录模块。我想将异常写入日志文件,以便稍后查看。在控制台上打印日志消息工作正常,但我无法将相同的日志消息写入日志文件。下面是我的代码。

我的设置.py

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

我的意见.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

我的控制台输出

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

我的日志文件输出

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

我的网址.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) 

请让我知道我哪里出错了。我希望将控制台中打印的相同文本写入日志文件。

【问题讨论】:

    标签: python django logging


    【解决方案1】:

    我在 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'
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2021-10-07
      • 1970-01-01
      • 2015-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-13
      • 1970-01-01
      相关资源
      最近更新 更多