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('>'):
我创建了一个简单的演示来测试我的 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('>'):