"""
0、日志收集器:
1、日志级别(LEVEL):DEBUG/INFO/WARNING/ERROR/CRITICAL(FATAL)
2、输出渠道(Handle):控制台(StreamHandle)、文件(FileHandle)
3、日志内容(Formatter):时间-哪个文件-哪行代码-输出内容
logging模块,默认root日志收集器,默认的输出级别为:WARNING
自定义收集器
第一步:创建一个日志收集器:logging.getLogger("收集器的名字")
第二步:给收集器设置日志级别:logger.setLevel(logging.INFO)
第三步:给日志收集器创建一个输出渠道:logging.StreamHandler()
第四步:给渠道设置一个日志输出内容的格式:handle1.setFormatter(formatter)
第五步:将设置的格式绑定到渠道中,将格式与渠道关联起来:handle1.setFormatter(formatter)
第六步:将设置好的渠道添加至收集器中:logger.addHandler(handle1)
"""
import logging
logger = logging.getLogger("yyc-py")
# 设置日志输出级别
logger.setLevel(logging.INFO)
# 设置日志输出在哪些渠道
handle1 = logging.StreamHandler()
# 设置渠道的输出内容格式
fmt = "%(asctime)s %(name)s %(levelname)s %(filename)s-%(lineno)d行: %(message)s"
formatter = logging.Formatter(fmt)
# 将日志格式绑定到渠道当中
handle1.setFormatter(formatter)
# 将设置好的渠道添加至收集器中
logger.addHandler(handle1)
# 添加fileHandle
handle2 = logging.FileHandler("yyc2-py.log",encoding="utf-8")
handle2.setFormatter(formatter)
logger.addHandler(handle2)
logger.info("hello,文件收集器!!")
StreamHandler输出内容:
FileHandle输出内容(会多一个文件):
二、封装日志类
import logging
class MyLogger(logging.Logger):
def __init__(self,name,level=logging.INFO,file=None):
super().__init__(name,level)
# 日志格式
fmt = "%(asctime)s %(name)s %(levelname)s %(filename)s-%(lineno)d行: %(message)s"
formatter = logging.Formatter(fmt)
# 控制台渠道
handle1 = logging.StreamHandler()
handle1.setFormatter(formatter)
self.addHandler(handle1)
# 若有文件渠道
if file:
handle2 = logging.FileHandler(file,encoding="utf-8")
handle2.setFormatter(formatter)
self.addHandler(handle2)
mlogger = MyLogger("YYC",file="mylogger.log") # 实例化后,后续调用不用再实例化
if __name__ == '__main__':
mlogger.info("测试自己封装的日志类!!")
控制台输出:
文件输出:
调用: