我想运行多个python脚本(假设它们都已开始
来自名为main.py
的主脚本),该脚本将写入一个日志
文件包含创建日期和时间,此外,我还需要
记录器要写入控制台和文件。 python 2 。
我尝试了许多不同的方法,但都没有成功
示例:
main.py
:一个接一个地运行脚本python1.py
和python2.py
,然后
这三个python脚本将写入具有
名称中的日期和时间,日志显示在控制台上
跑步时。
此外,是否可以通过python脚本完成类似的操作 这些文件中有哪些?例如第四个文件log_to_one_file.py?
如果有人知道如何实现它-我将很高兴知道...
答案 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上下文管理器