'Python 3.9 logger RotatingLogger doesn't write anything into file

I created a simple demo to test my Django project.

when i invoke unittest, everything passed and i set logger.info to record log into debug.log. There should be some records appeared in my target file but nothing in it. debug.log

here is my 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()


also here is the main endpoint


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


Any ideas? A



Solution 1:[1]

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

In the decoration use eval function to deal with datetime format

After i changed if to this it works:

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

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Marinet