当前位置: 首页 > 面试题库 >

在保留settings.DEBUG的同时关闭SQL日志记录?

段溪叠
2023-03-14
问题内容

当settings.DEBUG =
True时,Django将SQL操作记录到内部缓冲区(无论是否记录到文件)中。因为我有一个长时间运行的过程,需要执行许多数据库操作,所以这会使我的程序的开发模式实例的内存消耗迅速增加。

我想在保留设置的同时禁用内部SQL日志记录机制.DEBUG已为我的开发打开:这可能吗?

Django版本1.3.0。


问题答案:

当settings.DEBUG为True时,Django使用CursorDebugWrapper而不是CursorWrapper。这就是将查询追加到connection.queries并消耗内存的原因。我会猴子补丁连接包装,以始终使用CursorWrapper:

from django.conf import settings
from django.db.backends import BaseDatabaseWrapper
from django.db.backends.util import CursorWrapper

if settings.DEBUG:
    BaseDatabaseWrapper.make_debug_cursor = lambda self, cursor: CursorWrapper(cursor, self)

像其他人建议的那样禁用日志记录将无法解决问题,因为即使关闭了日志记录,CursorDebugWrapper仍将查询存储在connection.queries中。



 类似资料:
  • 我有一个要求,因为我需要在Mulesoft Flow中关闭日志记录。我需要在记录器级别,如果可能的话,在Http连接器级别。尝试将INFO更改为关闭log4j2.xml文件,但没有运气。我需要更新log4j2.xml文件中的哪些参数才能使其工作。现在我已经做了异步记录器。 提前感谢

  • 我做了一个桌子预订系统,我想显示预订的桌子,使人们不能选择相同的桌子和相同的时间,但我不确定如何做到这一点。有些词是荷兰语的,随便问吧。 这是在表中显示信息的代码。

  • 问题内容: 我在独立应用程序中使用Apache Common Logging库。在网上搜索后,我尝试通过使用以下方式关闭日志记录 但是,我仍然可以看到正在打印的日志消息。我可以知道我错过了什么吗? 我可以通过以下方式关闭日志记录 在commons-logging.properties中。 但是,在开发期间,我的Netbeans不知道从何处获取commons-logging.properties,有

  • 在我的应用程序中,石英作业是在应用程序部署后立即安排的。我有两个日志文件和,都用于特定的日志记录。搜索日志文件只是记录访问者的IP,其余所有日志记录(异常、调试信息)都记录在应用程序日志文件中。 我面临的问题是,默认的Quartz语句正在登录到文件中,这不是必需的。 如何禁用该日志记录?将级别设置为OFF不起作用。我也遵循了禁用石英日志记录,但这也没有帮助。 下面是我的log4j.properti

  • 问题内容: 我最近继承了一些用Python 2.7编写的Selenium Webdriver代码。它正在Ubuntu上将大量数据记录到/ tmp- 太多了,这已经成为一个问题。我正在尝试将其关闭(或至少关闭)。 我一直在尝试进行RTFM,但这是Selenium(2.19.0)的新版本,手册尚未编写! 我可以看到有一个叫做的方法,听起来很有希望,但是要实现它,我需要实例化一个对象。否则,我不必实例化

  • 我只想关掉记录。我在文档中发现了这一点:https://docs.jboss.org/optaplanner/release/6.2.0.Final/optaplanner-docs/html_single/index.html#logging 然而,我的项目没有回溯。xml文件。 有什么建议吗? 编辑: 我现在已经将以下logback.xml文件添加到类路径的根目录中: 这些jar文件在我的类路