Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何在python中使用for循环中的日志记录将特定输出写入多个日志文件?_Python 3.x_Logging - Fatal编程技术网

Python 3.x 如何在python中使用for循环中的日志记录将特定输出写入多个日志文件?

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个实验中的每一个

目标: 将一个实验“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也包括在内)

非常感谢您的帮助

您的代码如下所示:

注意,您正在向日志对象添加第二个处理程序,然后添加第三个处理程序。您没有删除旧的处理程序

你可以:

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