多个python脚本写入一个包含日期和时间创建的日志文件

时间:2020-10-18 09:32:42

标签: python logging

  1. 我想运行多个python脚本(假设它们都已开始 来自名为main.py的主脚本),该脚本将写入一个日志 文件包含创建日期和时间,此外,我还需要 记录器要写入控制台和文件。 python 2

    我尝试了许多不同的方法,但都没有成功

    示例:

    main.py:一个接一个地运行脚本python1.pypython2.py,然后 这三个python脚本将写入具有 名称中的日期和时间,日志显示在控制台上 跑步时。

  2. 此外,是否可以通过python脚本完成类似的操作 这些文件中有哪些?例如第四个文件log_to_one_file.py?

如果有人知道如何实现它-我将很高兴知道...

2 个答案:

答案 0 :(得分:0)

来自docs

多次调用logging.getLogger('someLogger')返回对同一记录器对象的引用。只要在同一Python解释器进程中,不仅在同一模块内,而且在各个模块之间都是如此。引用同一对象是正确的;

答案 1 :(得分:0)

这听起来像是一项家庭作业,它假定不存在现成的python模块。

在这种情况下,最好检查python file operations并创建一个函数,该函数接收日志内容和日志文件路径作为参数,并在日期和时间加上前缀后将内容附加到该文件。然后,您可以在名为log_to_one_file.py的同一文件夹中创建一个文件,将函数放在此处,然后使用from log_to_one_file import function

将其导入您需要记录的文件中。

如果需要更多的插件解决方案,更高级的答案是,您可以覆盖默认的sys.STDOUT变量,然后将文件流附加到该变量上:

import sys
import sys

class Logger(object):
    def __init__(self, path):
        self.terminal = sys.stdout
        self.log = open(path, "a")

    def write(self, message):
        self.terminal.write(message)
        self.log.write(message)  

    def flush(self):
        pass    

sys.stdout = Logger(path)

在上述解决方案中,您可以在write类的Logger方法内用日期和时间前缀修改消息。 然后,在这段代码运行之后,每当您在程序中调用print时,它将使用您设置的格式自动写入文件并登录到控制台。

如果您想在更有限的环境中应用上述解决方案,则可以阅读Python上下文管理器

相关问题