python - Python日志记录没有发生
问题描述
我有一个用于从数据库表中删除记录的 python 脚本。有些表的容量很大,比如 5 亿条记录。每个删除语句之后都有日志语句。但是日志语句没有被打印,但删除语句正在执行,因为我可以看到数据库中的数据被清除。
下面是代码片段:
del_query = "delete from {source_schema}.RAW_TAB where raw_tab_id in " \
"(select RAW_TAB_ID from {source_schema}.RAW_TAB_1 where T1_ID in ({t1_list})) " \
.format(source_schema=source_schema, t1_list=t1_list)
logger.info("Deletion iteration started from source")
logger.debug("Executing query :\n {} for ".format(del_query))
cursor.execute(del_query)
del_query = "delete from {source_schema}.RAW_TAB_1 where T1_ID in ({t1_list}) " \
.format(source_schema=source_schema, t1_list=t1_list)
logger.debug("Executing query :\n {}".format(del_query))
cursor.execute(del_query)
在上面的语句中,t1_list
是逗号分隔的值,比如t1,t2,t3
等。我传入大小为 50 的集合。因此,应该从这些大容量表中删除几条记录。这里给出的示例代码是方法的一部分,该方法被调用了数千次,直到所有记录都被删除。
因此,想了解为什么不打印日志语句但随后的删除语句正在正确执行。当我运行脚本时,我不确定是否正在发生清除,直到我在数据库中查询。当我使用相同的脚本来清除体积较小的表时,清除会正确发生。所以,问题是表的体积很大。python的字符串格式方法是否有任何限制,它只能接受一定长度的字符串?或者日志记录实现是否有任何问题。
日志声明如下:
import logging
logger = logging.getLogger('sspurge.' + __name__)
3.8 中使用的 Python 版本
解决方案
查看官方文档以获取有关日志记录的更多信息。
您没有看到任何日志消息,因为您忘记将 Logger 实例的日志记录级别更改为DEBUG
. 默认级别是WARNING
,因此只会打印WARNING
消息和更严重的消息 (ERROR
和)。CRITICAL
如果你还想打印DEBUG
和INFO
消息,则需要在创建 Logger 实例后添加以下行:
import logging
logger = logging.getLogger('sspurge.' + __name__)
logger.setLevel(logging.DEBUG)
推荐阅读
- java - 改造后请求发送空对象
- typescript - 如何使用 Ionic sqlite 返回返回数据
- java - 使用 java 流将列表转换为映射
- c# - 如何从 EF6 中的表中读取浮点数据
- vba - stdregprov 的枚举值返回与 regedit 不同的列表
- android - 安卓工作室。无法加载类“com.google.gson.JsonParseException”
- javascript - 根据特定时区生成规则
- javascript - 为什么我的这个无类型导入的自定义类型没有被拾取(小滑块)?
- ruby - 在 Ruby 中使用 GTK3 进度条
- css - 动画 tspan x & y