"""
参考文档:https://www.cnblogs.com/yyds/p/6901864.html
logging模块的四大组件:
loggers(日志器):提供应用程序代码直接使用的接口
handlers(处理器):用于将日志记录发送到指定的目的位置
filters(过滤器):提供更细粒度的日志过滤功能,用于决定哪些日志记录将会被输出(其它的日志记录将会被忽略)
formatters(格式器):用于控制日志信息的最终输出格式
"""
1 import logging
2 import logging.handlers
3 import time
4 from testcase.basic import get_project_path
5
6
7 def get_logger():
8 # 第一步,创建一个logger
9 logger = logging.getLogger()
10 # 设置log日志等级
11 logger.setLevel(logging.INFO)
12 # 第二步,创建一个handler,用于写入日志文件
13 strf_time = time.strftime("%Y%m%d%H%M%S", time.localtime(time.time()))
14 project_path = get_project_path.get_project_path() # 获取项目跟目录,获取项目根路径的方法,之前发过,请翻阅一下。
15 filename = project_path + '/log/' + strf_time + '.log' # 定义日志存放路径及名称
16 # 创建 hander,设置日志切割时间(半夜),按天存放,最多存放7个日志文件
17 rf_handler = logging.handlers.TimedRotatingFileHandler(filename, when='midnight', interval=1, backupCount=7
18 , encoding="UTF-8")
19 # 第三步,定义handler的输出格式
20 data_format = "%Y-%m-%d %H:%M:%S"
21 rf_handler.setFormatter(logging.Formatter("%(asctime)s-%(filename)s-%(funcName)s[line:%(lineno)d]-%(levelname)s:%("
22 "message)s", datefmt=data_format))
23 # 第四步,将logger添加到handler里面,并返回
24 logger.addHandler(rf_handler)
25 return logger
26
27
28 if __name__ == '__main__':
29 def test01():
30 logger = get_logger()
31 logger.debug('***debug***')
32 logger.info('***信息***')
33 logger.warning('***警告***')
34 logger.error('***error***')
35 logger.critical('***critical***')
36 test01()
运行后效果: