我是一个椭圆 发表于 2022-5-23 22:56:10

说不清楚,展开看吧,代码不到30行

首先我定义一个类:
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”文件中是“ - 5”
“6.log”文件中是“ - 6”


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


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

wp231957 发表于 2022-5-23 22:56:11

我是一个椭圆 发表于 2022-5-24 11:58
已解决:

我是来收赏金的

我是一个椭圆 发表于 2022-5-24 11:58:03

已解决:
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
      )

我是一个椭圆 发表于 2022-5-24 17:41:22

wp231957 发表于 2022-5-23 22:56
我是来收赏金的

哈哈哈,那你来的真是时候
页: [1]
查看完整版本: 说不清楚,展开看吧,代码不到30行