创建多个日志文件python

时间:2017-11-09 17:59:14

标签: python logging

我想将结果保存为日志文件,因此我想导入日志记录模块。我知道要输出文件,代码非常简单。

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

2 个答案:

答案 0 :(得分:1)

您未正确使用字符串的format功能。您正在尝试使用字符串插值,这是一种完全不同的格式化字符串的方法。你应该尝试这样的事情:

filename = 'mylog{0}.txt'.format(i)

{0}明确声明您应该将传递给format的第一个值。如果您愿意,可以将其保留为{} - 这没有什么区别。

答案 1 :(得分:1)

  1. 关于文件名:

    filename = str.format('mylog%d.txt' % i)
    

    等于:

    filename = 'mylog%d.txt' % i
    
  2. 要输出到多个文件,您可以使用多个处理程序。

    记录处理日志记录的类。

    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。 您可以同时将日志输出到任何文件。

  3. 欲了解更多信息,请阅读: