#日志的作用 #1,排错 #2,程序调试,一边开发一边调试 #3,用户行为分析

####python中记录日志的模块 # logging模块 #日志等级 数值表示 描述 #DEBUG 10 最详细的日志,常用于调试 #INFO 20 详细日志,记录关键节点 #WARNING 30 默认顶级,当前有不期望的事情发生了 #ERROR 40 发生了错误问题,导致某些功能不能正常使用 #CRITICAL 50 发生严重错误,程序不能运行

#####简单场景使用,
# import logging
# #格式类型可以去百度
# LOG_FORMAT = "%(asctime)s-%(levelname)s:%(message)s"
# logging.basicConfig(level=logging.INFO,format=LOG_FORMAT,filename="my.log")#写入文件
# logging.debug("this is debug")
# logging.info("this is ifo")
# logging.warning("this is warning")#默认等级及以上才能记录
# logging.error("this is error")

 

###日志在项目里的语法
#四大组件
#日志器Logger
#处理器Hander
#过滤器Filter
#格式器Formatter

# import logging
# #获取loggger对象,用于记录日志
# #等下所有的东西都要帮到logger上才能生效
# logger = logging.getLogger()
# #创建handler对象,用于写入日志,规定日志输出到那里,这里也只是创建了两个对象,必须绑到logger上才能有用
# fh = logging.FileHandler("my.log")
# #输出到屏幕
# ch = logging.StreamHandler()
# #指定格式
# formatter =logging.Formatter ("%(asctime)s-%(levelname)s:%(message)s")
# #绑定formatter到handler上
# fh.setFormatter(formatter)
# #绑定handler到logger上
# logger.addHandler(fh)
# logger.addHandler(ch)
#
# logger.info("logger info")
# logger.warning("logger warnning")
# logger.error("logger error")

 

日志轮转服务

1,按大小轮转

# #,按大小轮转
# import logging
# from logging.handlers import  RotatingFileHandler,TimedRotatingFileHandler#设置时间轮转和大小轮转
# #获取loggger对象,用于记录日志
# #等下所有的东西都要帮到logger上才能生效
# logger = logging.getLogger()
# #创建handler对象,用于写入日志,规定日志输出到那里,这里也只是创建了两个对象,必须绑到logger上才能有用
# # fh = logging.FileHandler("my.log")
# fh = RotatingFileHandler("my.log",maxBytes=500,backupCount=2)#500字节备份一下
# #输出到屏幕
# ch = logging.StreamHandler()
# #指定格式
# formatter =logging.Formatter ("%(asctime)s-%(levelname)s:%(message)s")
# #绑定formatter到handler上
# fh.setFormatter(formatter)
# #绑定handler到logger上
# logger.addHandler(fh)
# logger.addHandler(ch)
# for i in range(1000):
#     logger.warning(f"this is rotate test:{i}")

 二、按时间轮转

#####按时间轮转
import logging
from logging.handlers import  RotatingFileHandler,TimedRotatingFileHandler#设置时间轮转和大小轮转
#获取loggger对象,
#等下所有的东西都要帮到logger上才能生效
logger = logging.getLogger()
#创建handler对象,用于写入日志,规定日志输出到那里,这里也只是创建了两个对象,必须绑到logger上才能有用
# fh = logging.FileHandler("my.log")
fh = RotatingFileHandler("my.log",when="D",interval=2,backupCount=2)#D是按天轮转
#输出到屏幕
ch = logging.StreamHandler()
#指定格式
formatter =logging.Formatter ("%(asctime)s-%(levelname)s:%(message)s")
#绑定formatter到handler上
fh.setFormatter(formatter)
#绑定handler到logger上
logger.addHandler(fh)
logger.addHandler(ch)
for i in range(1000):
    logger.warning(f"this is rotate test:{i}")


####################3
#生成logger对象的时候,没有传递参数就去,那就生成root logger 父logger
#传递了参数类似于子logger,会继承父类的logger
logger2 = logging.getLogger("sc2")
logger2.warning("this is logger3 message")