python – 将信息记录到Django Server的STDOUT

python – 将信息记录到Django Server的STDOUT,第1张

概述我正在设置登录Django服务器.我希望能够将任意INFO级别的字符串记录到服务器的标准输出中,因此它与标准的Django消息一起出现,如下所示: [24/Feb/2014 20:37:03] "POST /v1/events/ HTTP/1.1" 201 0 这是我当前的日志配置: LOGGING = { 'version': 1, 'disable_existing_logge 我正在设置登录Django服务器.我希望能够将任意INFO级别的字符串记录到服务器的标准输出中,因此它与标准的Django消息一起出现,如下所示:
[24/Feb/2014 20:37:03] "POST /v1/events/ http/1.1" 201 0

这是我当前的日志配置:

LOGGING = {    'version': 1,'disable_existing_loggers': False,'filters': {        'require_deBUG_false': {            '()': 'django.utils.log.requiredeBUGFalse'        }    },'handlers': {        'mail_admins': {            'level': 'ERROR','filters': ['require_deBUG_false'],'class': 'django.utils.log.adminEmailHandler'        },#'file': {            #'level': 'DEBUG',#'class': 'logging.fileHandler',#'filename': '/tmp/djdeBUG.log',#},'console': {            'level': 'INFO','class': 'logging.StreamHandler','stream': sys.stdout        }    },'loggers': {        'django.request': {            'handlers': ['mail_admins'],'level': 'ERROR','propagate': True,},'django': {            'handlers': ['console'],'propogate': True,'level': 'INFO'        }        #'django': {            #'handlers': ['file'],#'propagate': True,#'level': 'DEBUG',}}

在我的django项目的应用程序的models.py文件中,我在顶部执行以下 *** 作:

import logginglogger = logging.getLogger(__name__)

然后,在一些代码中,我编写运行以下内容:

logger.info('triggering notifications')

代码命中了调用它的位置,但没有任何内容写入服务器的标准输出.我错过了什么吗?我在本地运行,并且DEBUG = True,但是我希望即使在DEBUG = False的生产中也能显示INFO消息.

解决方法 __name__是包含记录器的python模块的名称.因此,要使记录器工作,您应该将settings.py中的记录器从django重命名为调用getLogger的模块的名称.第二个选项 – 只需将__name__更改为django:
logger = logging.getLogger('django')

迟到更新你的评论:

Yeah,but I still want all of my loggers namespaced. I’m just
wondering if there’s a way to set a “base line” configuration for all
modules and have everything automatically inherit from that. Using
‘django’ for everything is out of the question,totally unmodular.

您只需要将’your_project_name’记录器添加到记录器列表中.记录器名称的虚线路径定义层次结构.例如,如果您需要,比如说,项目中的“some_application”文件日志和所有其他应用程序日志消息(INFO级别)应该仅用于控制台,那么您的记录器列表可能如下所示:

'loggers': {    'django.request': {        'handlers': ['mail_admins'],'django': {        'handlers': ['console'],'level': 'INFO'    },#...    'your_project_name': {        'handlers': ['console'],'propagate': False,'level': 'INFO','your_project_name.some_application': {        'handlers': ['file'],# propagate here to root project level                           # logger to also print this message to console        'level': 'DEBUG',#...    'your_project_name.some_application.models': {        'handlers': ['mail_admins'],#,'console']        'propagate': True,# if file and console needed,# but 'console' can be added to handlers                           # and propagate set to False                           # to avoID this log messages in file...        'level': 'ERROR',}

在some_application中调用logger = logging.getLogger(__ name__)将获得记录器,该记录器应将所有消息记录到文件中,并传播到根项目记录器以在控制台上显示它们.所有其他应用程序模块__name__将仅匹配您的根项目记录器:your_project_name,它将仅在控制台上打印消息.如果需要,您可以向树中添加一个级别,例如your_project_name.some_application.models,它们可以使用mail_admins处理程序向@R_301_6943@报告一些数据库问题.您可以在层次结构中更改不同记录器上的记录器级别!

总结

以上是内存溢出为你收集整理的python – 将信息记录到Django Server的STDOUT全部内容,希望文章能够帮你解决python – 将信息记录到Django Server的STDOUT所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1204979.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存