python中logging的使用问题

首先我定义一个类:

import logging

class Logger():
    def __init__(self, logfile='output.log'):
        self.logfile = logfile
        self.logger = logging.getLogger(__name__)
        logging.basicConfig(
            format='[%(asctime)s] - %(message)s',
            datefmt='%Y_%m_%d %H:%M:%S',
            level=logging.INFO,
            filename=self.logfile
        )

    def info(self, msg, *args):
        msg = str(msg)
        if args:
            print(msg % args)
            self.logger.info(msg, *args)
        else:
            print(msg)
            self.logger.info(msg)

然后我在下面的代码中使用了上面这个类:

import Logger

for foo in range(0, 10):
    file_name = "./out/" + str(foo) + ".log"
    logger = Logger(file_name)
    logger.info(str(foo))

我期望的是得到名字为0~9共10个.log文件,并且每个文件中的内容就是名字本身,比如:
“5.log”文件中是“[2022_05_23 22:42:36] - 5”
“6.log”文件中是“[2022_05_23 22:42:36] - 6”

然而上述代码运行后却得到只有一个“0.log”文件,其中内容为:
[2022_05_23 22:42:36] - 0
[2022_05_23 22:42:36] - 1
[2022_05_23 22:42:36] - 2
[2022_05_23 22:42:36] - 3
[2022_05_23 22:42:36] - 4
[2022_05_23 22:42:36] - 5
[2022_05_23 22:42:36] - 6
[2022_05_23 22:42:36] - 7
[2022_05_23 22:42:36] - 8
[2022_05_23 22:42:36] - 9

请问我要如何解决该问题?

这样应该能达到你的要求了:

class Logger():
    def __init__(self, logfile='output.log'):
        self.logfile = logfile
        self.logger = logging.getLogger(logfile)
        fh = logging.FileHandler(logfile, mode='w')
        lf = logging.Formatter('[%(asctime)s] - %(message)s')
        fh.setFormatter(lf)
        self.logger.addHandler(fh)
        logging.basicConfig(
            format='[%(asctime)s] - %(message)s',
            datefmt='%Y_%m_%d %H:%M:%S',
            level=logging.INFO,
            #filename=self.logfile
        )