Python 3.9 记录器 RotatingLogger 不向文件写入任何内容

Python 3.9 logger RotatingLogger doesn't write anything into file

我创建了一个简单的演示来测试我的 Django 项目。

当我调用 unittest 时,一切都通过了,我设置 logger.info 以记录登录到 debug.log。 我的目标文件中应该有一些记录,但里面什么也没有。

这是我的 Logger.py


import logging.config
import os

fmt = "%(asctime)s|%(levelname)s|%(filename)s:%(lineno)d|%(message)s"
datefmt = "%Y-%m-%d %H:%M:%S"

# dir
base_path = os.path.dirname(os.path.dirname(__file__))
log_path = os.path.join(base_path, 'logs')

if not os.path.exists(log_path):
    os.mkdir(log_path)

log_file = os.path.join(log_path, "debug.log")

file_handler = logging.handlers.RotatingFileHandler(
    # 'debug.log',
    log_file,
    backupCount=10,
    encoding='utf-8'
)

logging.basicConfig(
    format=fmt,
    datefmt=datefmt,
    handlers=[file_handler],
    level=logging.INFO
)

# logging.DEBUG
# logging.INFO
# logging.WARNING
# logging.ERROR
# logging.CRITICAL

logger = logging.getLogger()


这里也是主要终点


import json
import unittest
from ddt import ddt, file_data
import api.KeywordApi as kwa
from commons.\
    Logger import logger


@ddt
class loginInterfaceTestCase(unittest.TestCase):

    @file_data('../testDatas/testdata_interface_login.yaml')
    def test_login(self, **params):
        print("{:*^50s}".format("the first correct answer"))
        path = "/dologin/"
        data = {
            "username": params['username'],
            "pwd": params['password'],
            "randomCode": "1234"
        }

        # 2:send request
        res = kwa.do_post(path, data)

        # 3:assert
        self.assertEqual(200, res.status_code, "fail:{}".format(res.status_code))
        print('text', res.text)
        # print(type(res.text))
        logger.info(type(res.text))
        # logger.info(res.text)
        print(json.dumps(res.json(), indent=2, ensure_ascii=False))
        self.assertEqual(params['code'], res.json()['code'], 'failed')


if __name__ == '__main__':
    unittest.main()


有什么想法吗? A

            if type(datas[key]) == 'str' and datas[key].startswith('<') and datas[key].endswith('>'):

装饰中使用eval函数处理datetime格式

在我改变 if 之后,它起作用了:

if type(datas[key]) == str and datas[key].startswith('<') and datas[key].endswith('>'):