Python 3.x 如何在python中使用for循环中的日志记录将特定输出写入多个日志文件?
目标: 将一个实验“A”运行10次,每次使用不同的输入。实验A返回一个浮点值作为其输出(我们称之为结果)。10个实验的所有10个结果都应保存在结果文件中(使用日志记录)。在运行实验a(每次)时,需要进行大量的日志记录。(10)个实验的所有中间输出都应写入(10)个不同的日志文件 换句话说,, 如果我的实验目录是“exp\u dir”。实验结束后,应该存在一个结果(日志)文件,用于保存每个实验的输出(只需保存输出,不保存其他内容)。在运行每个实验的过程中,我将在exp_目录中为10个实验中的每一个创建子目录(exp1、exp2等),并将实验结果记录在相应的子目录中(实验1结果应保存在exp1子目录中)。我计划在一个python文件中使用for循环实现这一点 你能告诉我如何单独记录吗?这就是我所尝试的(而不是我在2个实验中尝试了10个实验) 但是,在exp2中记录的所有内容也都记录在exp1中,res.log包含所有记录(exp1,exp2也包括在内) 非常感谢您的帮助您的代码如下所示: 注意,您正在向日志对象添加第二个处理程序,然后添加第三个处理程序。您没有删除旧的处理程序 你可以:Python 3.x 如何在python中使用for循环中的日志记录将特定输出写入多个日志文件?,python-3.x,logging,Python 3.x,Logging,目标: 将一个实验“A”运行10次,每次使用不同的输入。实验A返回一个浮点值作为其输出(我们称之为结果)。10个实验的所有10个结果都应保存在结果文件中(使用日志记录)。在运行实验a(每次)时,需要进行大量的日志记录。(10)个实验的所有中间输出都应写入(10)个不同的日志文件 换句话说,, 如果我的实验目录是“exp\u dir”。实验结束后,应该存在一个结果(日志)文件,用于保存每个实验的输出(只需保存输出,不保存其他内容)。在运行每个实验的过程中,我将在exp_目录中为10个实验中的每一个
def __init__(self):
self.handler = None
# ... other code ...
def activateLogFile(self, f):
# ... other code ...
if self.handler is not None:
self.logger.removeHandler(self.handler)
self.handler = logging.FileHandler(f)
self.logger.addHandler(self.handler)
如中所述,您可以简单地使用:
def activateLogFile(self, f):
# ... other code ...
self.logger.handlers = []
self.logger.addHandler(handler)
你怎么了
为了说明这一点,问题是如何分别记录每个实验,以及如何将每个实验的结果保存在结果文件中。您已经向我们展示了您想要做的事情,但没有向我们展示您尝试了什么。堆栈溢出不是代码编写服务。在这里发布问题之前,您需要展示自己的努力。您已导入日志记录,但我们看不到您尝试使用它做任何事情的任何地方。你看过文件了吗?尝试了一些东西但没有成功?编辑您的问题并发布您尝试过的内容。不要评论你的问题;编辑问题本身并添加您的澄清。抱歉。我包括了我的代码。
def __init__(self):
self.handler = None
# ... other code ...
def activateLogFile(self, f):
# ... other code ...
if self.handler is not None:
self.logger.removeHandler(self.handler)
self.handler = logging.FileHandler(f)
self.logger.addHandler(self.handler)
def activateLogFile(self, f):
# ... other code ...
self.logger.handlers = []
self.logger.addHandler(handler)
import logging
from os.path import join, dirname, abspath
def fast_log(msg, filename='res.log'):
logging.basicConfig(filename=filename, level=logging.INFO)
logging.info(msg)
def do_experiment(i):
filename = join(dirname(abspath(__file__)), "%d.log" % i)
fast_log("experiment initialization log", filename)
# do stuff
fast_log("first stage", filename)
# do a lot
# more stuff
# ...
results = execute_final_stage_of_exp()
return results
for i in range(1, 11):
fast_log(do_experiment(i))