我想将结果保存为日志文件,因此我想导入日志记录模块。我知道要输出文件,代码非常简单。
logging.basicConfig(filename='logger.log', level=logging.INFO)
logging.debug('debug message')
logging.info('info message')
logging.warn('warn message')
logging.error('error message')
logging.critical('critical message')
但是,如果我想输出多个日志文件怎么办?例如,在下面的for循环中,每次迭代都会输出一个日志文件,我应该怎么做?
for i in range(1,10):
print (i)
#output a log file to save I value
我尝试使用这些代码,但它无效。
for i in range(1,10):
filename = str.format('mylog%d.txt' % i)
logging.basicConfig(format=log_fmt, level=logging.DEBUG, filename=filename)
logging.debug('This is debug message')
logging.info('This is info message')
logging.warning('This is warning message')
答案 0 :(得分:1)
您未正确使用字符串的format
功能。您正在尝试使用字符串插值,这是一种完全不同的格式化字符串的方法。你应该尝试这样的事情:
filename = 'mylog{0}.txt'.format(i)
{0}
明确声明您应该将传递给format
的第一个值。如果您愿意,可以将其保留为{}
- 这没有什么区别。
答案 1 :(得分:1)
关于文件名:
filename = str.format('mylog%d.txt' % i)
等于:
filename = 'mylog%d.txt' % i
要输出到多个文件,您可以使用多个处理程序。
记录处理日志记录的类。
root_logger = logging.getLogger()
返回root处理程序。您可以向记录器添加或删除处理程序。
root_logger.handlers
包含根记录器的处理程序列表。
first = root_logger.handlers[0]
first.close()
root_logger.removeHandler(first)
删除第一个处理程序。
new_handler = logging.FileHandler(file_name)
formatter = logging.Formatter('%(asctime)s ' + ' %(message)s', '%H:%M:%S')
new_handler.setFormatter(formatter)
root_logger.addHandler(new_handler)
将新格式化程序添加到root_handler。 您可以同时将日志输出到任何文件。
欲了解更多信息,请阅读: