将信息记录到Django服务器的STDOUT

2024-04-25 10:29:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在Django服务器上设置日志记录。我希望能够将任意信息级别的字符串记录到服务器的标准输出中,因此它会出现在标准Django消息旁边,如下所示:

[24/Feb/2014 20:37:03] "POST /v1/events/ HTTP/1.1" 201 0

以下是我当前的日志记录配置:

^{pr2}$

在一个模型.py在我的django项目的应用程序中,我在顶部执行以下操作:

import logging
logger = logging.getLogger(__name__)

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

logger.info('triggering notifications')

代码到达了调用它的位置,但是没有任何内容写入服务器的stdout。我错过什么了吗?我在本地运行,DEBUG=True,但是我希望即使在生产环境中DEBUG=False也能显示信息消息。在


Tags: django字符串代码debug服务器信息消息标准
1条回答
网友
1楼 · 发布于 2024-04-25 10:29:58

__name__是包含记录器的python模块的名称。因此,要使您的记录器正常工作,您应该在中重命名您的记录器设置.pyfromdjango从中调用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.

您只需将您的项目名称'记录器添加到loggers列表。记录器名称的虚线路径定义了一个层次结构。例如,如果您需要,比方说,项目中“某些应用程序”的文件日志以及所有其他应用程序的日志消息(INFO级别)应该只转到控制台,那么您的日志记录者列表可以如下所示:

^{pr2}$

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

相关问题 更多 >