在创建对象期间,我正在根据对象唯一标签创建一个具有唯一名称的记录器。我想要不同对象的不同日志文件。它只创建单个文件并将所有日志附加到它
我在构造函数(init)中创建了 5 个学生类的实例,标签从 1 - 6 递增,我通过将标签附加到它来创建一个具有唯一名称的记录器对象。运行后只创建一个文件,而不是预期的 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-07 的消息12:52:49,898 来自 Object4 的消息 2019-07-16 12:52:49,904 来自 Object5 的消息
您只能使用logging.basicConfig()
一次。它配置root
记录器,如果已经附加了一个处理程序,它将静默返回而不做任何事情。
该文件指出:
如果根记录器已经为其配置了处理程序,则此函数不执行任何操作。
在您的情况下,第一个实例将配置记录器。稍后创建的实例不会。
您可能希望通过将 a 附加Handler
到记录器而不是使用 来手动配置记录器logging.basicConfig()
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句