在 Django 中使用 logging
在 Django 中使用 logginglogging 模块简介logging 是 python 标准库中的模块,用于记录 log。 主要包括以下四个组件:
下面是 Python 官方文档提供的log流程图 用户程序通过一个Logger类的实例写log,可以通过如下方法获取: logger?=?logging.getLogger(__name__) Logger 类实例有一个层级表示的名字,如果不指定,就是根层级,也就是 root,后面可以使用点号分隔的方式来定义自己的log层级。 在D jango 中使用Django 中使用 logging 模块记录log,除了Pythong文档中提到的配置方法外,也可以在 Django 中使用 Django 提供的配制方法。就是在 settings 中通过变量 LOGGING,LOGGING 是一个字典,典型的配置如下: LOGGING?=?{ ????'version':?1,????'disable_existing_loggers':?False,????'formatters':?{ ????????'verbose':?{ ????????????'format':?'%(levelname)s?%(asctime)s?%(module)s?%(process)d?%(thread)d?%(message)s' ????????},????????'simple':?{ ????????????'format':?'%(levelname)s?%(message)s' ????????},????},????'filters':?{ ????????'special':?{ ????????????'()':?'project.logging.SpecialFilter',????????????'foo':?'bar',????????},????????'require_debug_true':?{ ????????????'()':?'django.utils.log.RequireDebugTrue',????'handlers':?{ ????????'console':?{ ????????????'level':?'INFO',????????????'filters':?['require_debug_true'],????????????'class':?'logging.StreamHandler',????????????'formatter':?'simple' ????????},????????'mail_admins':?{ ????????????'level':?'ERROR',????????????'class':?'django.utils.log.AdminEmailHandler',????????????'filters':?['special'] ????????} ????},????'loggers':?{ ????????'django':?{ ????????????'handlers':?['console'],????????????'propagate':?True,????????'django.request':?{ ????????????'handlers':?['mail_admins'],????????????'level':?'ERROR',????????????'propagate':?False,????????'myproject.custom':?{ ????????????'handlers':?['console',?'mail_admins'],????????????'level':?'INFO',????????????'filters':?['special'] ????????} ????} } 可以看到里面定义了两种 formatters,两种 filters,两种 handlers 指定了捕获 log 的等级,使用的 filters 和 formater,以及 log 输出到哪里。loggers 定义了三种 loggers,起了名字,指定了了所用的 handler,这里注意,指定的 level 是 logger 所捕获的等级,但传递到 hander 后不一定按照该等级输出,还要看 handler 的输出等级。 使用时在应用程序中示例如下: import?logging mylog?=?logging.getLogger('myproject.custom') if?somethong?wrong: ????mylog.Warning('something?is?wrong') 参考: https://stackoverflow.com/questions/1598823/elegant-setup-of-python-logging-in-django (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |