#简单使用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 INFO")
logging.warning("this is WARNING")
logging.error("this is ERROR")
my.log
2022-08-12 16:23:46,606-INFO:this is INFO
2022-08-12 16:23:46,606-WARNING:this is WARNING
2022-08-12 16:23:46,607-ERROR:this is ERROR
logging日志的四大组件
日志器 Logger – linux logrotate服务 – 配置文件/etc/logrotate.conf,/etc/logrotate.d
处理器 Handler
过滤器 FIlter
格式器 Formatter
import logging
from logging.handlers import RotatingFileHandler,TimedRotatingFileHandler
#获取logger对象,用于记录日志
logger = logging.getLogger("sc1")#创建handler对象,用于写入日志,规定日志输出到那里#输出到文件# fh = logging.FileHandler("my.log")#按大小轮转,这里指定日志500字节就轮转,最大2个备份文件# fh = RotatingFileHandler("my.log",maxBytes=500,backupCount=2)#按时间轮转,when是单位,D是日,s是秒,interval=2 两天一轮转 ,保存2个备份
fh = TimedRotatingFileHandler("my.log",when="D",interval=2,backupCount=2)#输出到屏幕
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 warning ....")# logger.error("logger error ....")#手动生成数据测试# for i in range(1000):# logger.warning(f"this is rotate test :{i}")#也可以通过配置文件 json格式去指定#生成logger对象的时候,没有传递参数进去,那生成的log就是root logger 父logger#传递了参数进去,类似子logger#子日志器就会继承夫日志器的配置
logger2 = logging.getLogger("sc1")
logger2.warning("this is logger2 message...")