导入
import logging
创建Logger对象
相当于日志记录工具
my_logger = logging.getLogger(“testcase”)
设置日志器的日志等级
NOTSET(0), DEBUG(10), INFO(20), WARNING(30), ERROR(40), CRITICAL(50)
my_logger.setLevel(“DEBUG”)
my_logger.setLevel(logging.DEBUG)
创建日志输出渠道
控制台
console_handler = logging.StreamHandler()
console_handler.setLevel(“WARNING”)
输出文件
file_handler = logging.FileHandler(“testcase.log”, encoding=“utf-8”)
创建日志的显示样式(格式)
formater = logging.Formatter(’%(asctime)s - [%(levelname)s] - [msg]: %(message)s - %(name)s - %(lineno)d’)
console_handler.setFormatter(formater)
file_handler.setFormatter(formater)、
案例
yaml中相关数据
log:
logger_level: "DEBUG"
log_filename: "log_testcase.log"
path : r"C:\Users\PycharmProjects\pythonProject\frame_test\logs
import logging
import os
from frame_test.scripts.handle_yaml import do_yaml
# 当前文件的上级目录
path_dir = os.path.abspath(os.path.join(os.path.dirname("__file__"), os.path.pardir))
class Handle_log:
def __init__(self, name=None):
# 创建logger对象,
if name is None:
self.my_logger = logging.getLogger("testcase")
else:
self.my_logger = logging.getLogger(name)
# 设置日志级别
self.my_logger.setLevel(do_yaml.get_data("log","logger_level"))
#创建日志出去渠道,控制台输出
console_handler = logging.StreamHandler()
console_handler.setLevel("WARNING")
# 创建日志出去渠道,文本输出
# file_handler = logging.FileHandler("testcase.log", encoding="utf-8")
# 设置日志的输出路径
logname = do_yaml.get_data("log", "log_filename")
file_path = path_dir+"\\logs\\"+logname
file_handler = logging.FileHandler(file_path, encoding="utf-8")
# 4、创建日志的显示样式(格式)并与渠道进行关联
formater = logging.Formatter('%(asctime)s - [%(levelname)s] - [msg]: %(message)s - %(name)s - %(lineno)d')
console_handler.setFormatter(formater)
file_handler.setFormatter(formater)
# 5、日志器对象与日志输出渠道(展示的地方)进行关联
self.my_logger.addHandler(console_handler)
self.my_logger.addHandler(file_handler)
def get_logger(self):
return self.my_logger
do_log = Handle_log().get_logger()
if __name__ == '__main__':
do_log = Handle_log()
my_logger = do_log.get_logger()
my_logger.debug("这是一条debug级别的日志!")
my_logger.info("这是一条info级别的日志!")
my_logger.warning("这是一条warning级别的日志!")
my_logger.error("这是一条error级别的日志!")
my_logger.critical("这是一条critical级别的日志!")