Python日志未发生记录。

4

我有一个Python脚本,用于从数据库表中删除记录。其中一些表的数据量很大,例如500M条记录。在每个删除语句之后都有日志语句,但是日志语句没有被打印出来,但可以看到数据在数据库中被清除。

以下是代码片段:

 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__)

Python 3.8 中使用的版本

1个回答

0

请查看官方文档以获取有关日志记录的更多信息。

您没有看到任何日志消息,因为您忘记将Logger实例的日志级别更改为DEBUG。默认级别为WARNING,因此只会打印WARNING消息和更严重的消息(ERRORCRITICAL)。

如果您还想打印DEBUGINFO消息,则需要在创建Logger实例后添加以下行:

import logging

logger = logging.getLogger('sspurge.' + __name__)
logger.setLevel(logging.DEBUG)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接