gpt4 book ai didi

python - python中的Logger模块不会创建多个文件

转载 作者:行者123 更新时间:2023-12-01 00:44:54 25 4
gpt4 key购买 nike

我在创建对象期间根据对象唯一标签创建一个具有唯一名称的记录器。我想要不同对象的不同日志文件。它仅创建单个文件并将所有日志附加到其中

我创建了 5 个类(class)学生实例,其标签从 1 - 6 递增在构造函数(init)中,我通过向其附加标签来创建一个具有唯一名称的记录器对象。运行后仅创建一个文件,而不是预期的 5 个单独文件

#python2.7
import logging
class student:
def __init__(self,label):
self.label = label
file_name ="Log_Rollno" + str(self.label)
logging.basicConfig(filename=file_name,format='%(asctime)s %(message)s',filemode='w')
print "CREATED " + file_name
self.logger = logging.getLogger()
self.logger.setLevel(logging.DEBUG)
self.logger.info("Message from Object" + str(self.label))

if __name__ == "__main__":
for i in range(1,6):
student_obj = student(i)

我期望:根据对象唯一标签(Log_Rollno1、Log_Rollno2)的单个文件

实际结果:来自所有创建对象的消息仅附加到一个文件

(文件名:Log_Rollno1)2019-07-16 12:52:49,884 来自Object1的消息2019-07-16 12:52:49,890 来自Object2的消息2019-07-16 12:52:49,894 来自Object3的消息2019-07-16 12:52:49,898 来自Object4的消息2019-07-16 12:52:49,904 来自Object5的消息

最佳答案

您只能使用 logging.basicConfig() 一次。它配置 root 记录器,如果已经附加了处理程序,它将默默返回而不执行任何操作。

documentation状态:

This function does nothing if the root logger already has handlers configured for it.

在您的情况下,第一个实例将配置记录器。稍后创建的实例不会。

您可能希望通过附加 Handler 来手动配置记录器,而不是使用 logging.basicConfig()

Example in the docs showing how to attach a handler.

关于python - python中的Logger模块不会创建多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57052126/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com