Python的日志模块

参考了《Python3从入门到实战》及以下博客

https://www.cnblogs.com//yyds/p/690184.html
https://www.cnblogs.com/yyds/p/6901864.html
https://www.cnblogs.com/goodhacker/p/3355660.html
https://cuiqingcai.com/6080.html

一、日志基本介绍

为了监控一些可能发生了的事情(比如错误等)有一个日志最好不过了,这样你就可以清楚地看到发生了什么事情。

@logging是一种可以用于调试程序的方法,通过在程序不同的代码行添加logging语句,可以将程序的信息记录到文件中,而不是直接输出到控制台中,通过分析这个日志文件,可以检查程序的运行情况,查看程序是否出现了错误,日志文件可以记录大量日志信息,logging不会抛出错误。
#这些是一些关键字
'''
CRITICAL(关键)——非常严重的错误
ERROR(错误)——不太严重的错误
WARNING(警告)——警告
INFO(信息)——一些信息
DEBUG(调试)——调试信息
'''
#创建一条严重级别为DEBUG的日志记录
logging.debug(msg,*args,**kwargs)
#创建一条严重级别为INFO的日志记录
logging.info(msg,*args,**kwargs)
#创建一条严重级别为WARNING的日志记录
logging.warning(msg,*args,**kwargs)
#创建一条严重级别为ERROR的日志记录
logging.error(msg,*args,**kwargs)
#创建一条严重级别为CRITICAL的日志记录
logging.critical(msg,*args,**kwargs)
#创建一条严重级别为level(就是上述的级别)的日志记录
logging.log(level,*args,**kwargs)

@对root logger进行一次性配置
logging.basicConfig(**kwargs)
#其中 logging.basicConfig(**kwargs)
#用于指定"要记录的日志级别","日志格式","日志输出位置","日志文件的打开模式"
#等信息,其他几个函数都是用于记录各个级别日志的函数.

通常,首先用basicConfig配置记录的级别:如logging.DEBUG ,表示DEBUG以上级别的信息才会被记录到日志里。
	import logging
    #配置日志记录的级别
    logging.basicConfig(filename='you.log',level=logging.ERROR)
    #写日志 只记录ERROR及以上
    logging.debug("debug")
    logging.info("info")
    logging.warning("warning")
    logging.error("error")
    logging.critical("critical")



    #你可以去你默认放这个文件的地方去找到这个日志文件,就可以看到已经写入了一些日志信息  。
@使用同一个函数
#除了用不同的函数外:debug() info() 也可以只用一个函数 log()但设置信息的级别作为log() 方法的第一个参数
    import logging
    logging.basicConfig(filename='you.log',level=logging.ERROR)
    logging.log(logging.DEBUG,"dubug")
    logging.log(logging.INFO,"info")
    logging.log(logging.WARNING,"warning")
    logging.log(logging.ERROR,"error")
    logging.log(logging.CRITICAL,"critical")

二、logging模块的处理流程:

四大组件:

日志器(Logger):产生日志的一个接口
(Handler):把产生的日志发送到响应的目的地
( Filter):更精细地控制那些日志的输出
(Formatter):对输出信息进行格式化
(1):Logger:产生一个日志
--Logger.setLevel()设置日志器会处理的日志消息的最低严重级别
--Logger.addHandler()和Logger.removeHandler 为该logger对象添加一个处理器和移除一个处理器
--Logger.addFilter()和Logger.removeFilter()为该logger对象添加一个过滤器和删除一个过滤器
--Logger.debug()产生一条debug级别的日志,info,error等同理。
--Logger.exception()创建类似于Logger.error的日志消息
--Logger.log()创建一个日志记录,要填入参数的。
如何获得一个logger对象
--实例化
--logging.getLogger()
(2)Handler:
--把log发送到指定位置
--方法:setLevel,setFormat,addFilter,removeFilter
--不需要直接使用,Handler是基类
--logging.StreamHandler:将日志消息发送输出到Stream 如std.out std.err或任何file-like对象
--logging.FileHandler 将日志消息发送到磁盘文件 默认情况下文件大小会无限增长
--logging.handlers.RotatingFileHandler 将日志消息发送到磁盘文件,并支持日志文件按大小切割
--logging.handlers.TimeRotatingFileHandler 将日志文件发送到磁盘文件,并支持日志文件按时间切割
--logging.handlers.HTTPHandler 将日志文件以GET或POST的方式发送给一个HTTP服务器
--logging.handlers.SMTPHandler 将日志消息发送给一个指定的email地址。
--logging.NullHandler 该Handler实例会忽略error messages。
(3)Format类
--直接实例化
--可以继承Format添加特殊内容
--三个参数
--fmt 指定消息格式化字符串,如果不指定该参数则默认使用message的原始值
--datefmt 指定日期格式字符串,如果不指定该参数则默认使用“%Y-%m-%d %H:%M:%S”
--style 可取值为 % { $ 如果不指定该参数默认使用%
(4)Filter类
--可以被Handler和Logger使用
--控制传递过来的信息的具体内容

看个例子

	import logging
    import logging.handlers
    import datetime
    
    #定义logger
    logger = logging.getLogger("logger1")
    logger.setLevel(logging.DEBUG)#设置级别
    
    #再设置不同的处理器handler
    hander1 = logging.FileHandler('you.log')#设置名字
    hander1.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(message)s"))#设置输出
    
    hander2 = logging.FileHandler('my.log')#设置名字
    hander2.setLevel(logging.ERROR)#重新设置级别
    hander2.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(message)s"))#设置输出
    
    #添加到logger上
    logger.addHandler(hander1)
    logger.addHandler(hander2)
    
    
    #写日志
    logger.debug("debug")
    logger.info("info")
    logger.warning("warning")
    logger.error("error")
    logger.critical("critical")
#这样在你指定的文件中就可以看到已经写入的文件日志了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值