Python-创建日志文件并将其输出到循环中的不同文件夹
我有一个Logger类,我用它来写控制台和文件。但是,需求已经更改,我希望使用for循环将日志文件输出到不同的文件夹Python-创建日志文件并将其输出到循环中的不同文件夹,python,logging,Python,Logging,我有一个Logger类,我用它来写控制台和文件。但是,需求已经更改,我希望使用for循环将日志文件输出到不同的文件夹 import sys import os #from pathlib import Path class Logger(object): def __init__(self, name, mode="a"): self.stderr = sys.stderr self.stdout = sys.stdout self
import sys
import os
#from pathlib import Path
class Logger(object):
def __init__(self, name, mode="a"):
self.stderr = sys.stderr
self.stdout = sys.stdout
self.log = open(name, mode)
def __del__(self):
sys.stderr = self.stderr
sys.stdout = self.stdout
self.log.close()
def write(self, message):
self.stdout.write(message)
#self.stderr.write(message)
self.log.write(message)
def flush(self):
self.log.flush()
def printing(x):
print(x)
def output_path(path, x):
fname = os.path.join(path, "log_" + str(x) + ".txt")
if os.path.exists(fname): os.remove(fname)
sys.stdout = Logger(fname)
for i in range(3):
path = "../../../test/{}".format(str(i))
if not os.path.exists(path):
os.makedirs(path)
output_path(path, i)
printing(i + "Piece")
当我运行这段代码时,会创建3个日志文件,但是,日志文件中的输出不是我想要的
电流输出**
Log_0.txt -> 0piece
1piece
2piece
Log_1.txt -> 1piece
2piece
Log_2.txt -> 2piece
优先输出
Log_0.txt -> 0piece
Log_1.txt -> 1piece
Log_2.txt -> 2piece
如您所见,我对记录器的行为不太熟悉,我的问题是如何创建日志文件、写入日志文件并在每次迭代后关闭日志文件。我希望能够将其推广到嵌套循环,您可以查看python模块。它功能齐全,使用方便。
它有一个RotatingFileHandler,可以自动在文件上旋转。请参见示例:为什么不使用python日志框架?标准又好