Python日志模块logging,这一篇就够了

橙好科技logging模块教程


1-logging介绍

在这里插入图片描述

logging模块都知道是用来输出日志的,但是我们为什么要用它呢,他到底哪点好看?还是有特长?嘿嘿,今天超哥就来告诉你

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BtvdJJdZ-1620382958597)(C:\Users\Think\AppData\Roaming\Typora\typora-user-images\image-20210206190144074.png)]

以前我们都习惯用print,以为很方便,但是有利必有弊,print虽然能让你一时爽,后期代码部署上线,你需要挨个注释或者删除,代码冗余,费时费力。说到这里,logging的优势也就显而易见了,首先我们使用log代替print后,和print一样可以排查问题,更重要的是他可以全局统一管理,定制输出的日志格式,比如输出代码行,文件名称,日志时间,还可以根据代码逻辑分别输出调试日志和错误日志,更牛逼的是以后代码部署上线的时候,我们可以通过控制日志级别来控制哪些日志可以输出,哪些日志不再输出,是不是很强大?

2-日志作用

  1. ​ 方便排查问题
  2. ​ 对日志进行分级
  3. ​ 方便代码维护部署

先来看下最简单的日志输出代码:

代码示例:

import logging

logging.debug("This is a debug log.")
logging.info("This is a info log.")
logging.warning("This is a warning log.")
logging.error("This is a error log.")
logging.critical("This is a critical log.")

输出:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1TgYD3Nc-1620382958598)(C:\Users\Think\AppData\Roaming\Typora\typora-user-images\image-20210207211635292.png)]

日志说明:这是不配置日志时默认的输出内容

​ 1-日志级别 :2-根日志记录器 :3-日志内容

​ 相信你已经看到了,日志只输出了后三者(级别),因为日志默认warning级别,所以其他两个更低的级别不会输出了,但是这样的日志太简单了,不具有配置性,所以我们如果想要定制化的日志,就需要basicConfig了。

3-日志配置basicConfig

日志输出统一使用basicConfig进行配置,配置的参数如下:

参数 描述
filename 指定日志输出的文件名(fileHandler)如果不指定则默认输出到控制台。eg:filename=‘automatio.log’
filemode 指定打开文件的模式,如果指定了filename(如果文件模式未指定,则默认为’a’)。eg: filemode=‘a’
level 将根记录器级别设置为指定的级别。eg:level=loggin.INFO
format 为处理程序使用指定的格式字符串。eg: format=’%(name)s-%(asctime)s’
datefmt 使用指定的日期/时间格式。
handlers 如果指定,这应该是一个已经创建的处理程序的迭代器添加到根记录器。否则默认输出到控制台

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mA6NttUj-1620382958600)(C:\Users\Think\AppData\Roaming\Typora\typora-user-images\image-20210207212725483.png)]

代码示例:

def log():
    #使用basicConfig配置日志,level和format
    logging.basicConfig(level=logging.INFO, format='%(name)s-%(asctime)s-%(levelname)s-%(message)s')
    #使用getLogger方法设置日志记录器,不设置的话默认:root
    logger = logging.getLogger('Test')
    return logger

logger = log()
logger.info("这是定制化的日志")

输出:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6bSltwXA-1620382958601)(C:\Users\Think\AppData\Roaming\Typora\typora-user-images\image-20210207212537035.png)]

3-日志级别level

​ log一共五个级别,分别是:

级别 数值
CRITICAL 50
ERROR 40
WARNING 30,默认
INFO 20
DEBUG 10
NOTSET 0

日志配置:basicConfig,默认控制台输出,默认日志级别是WARNING,低于该级别的就不输出了

级别排序 :CRITICAL > ERROR > WARNING > INFO > DEBUG

关于级别的解释:

  • debug : 级别最低的日志,最为详细的日志,一般用来排查问题

  • info : 一般可作为正常输出的日志

  • warning : 一般用来输出警告的日志,但是不会影响代码执行

  • error : 一般在出错的代码逻辑中使用,说明目前代码报错,用来输出具体的错误信息

  • critical : 最高级别日志,一般用在程序崩溃的日志输出

    这时候,如果需要显示低于WARNING级别的内容,可以引入NOTSET级别来显示:

代码示例1import logging  # 引入logging模块

logging.basicConfig(level=logging.INFO)  # 设置日志级别
logging.debug("这是debug级别的日志")       #因为预设置的日志级别为INFO,所以小于该级别的日志不输出
logging.info("这是debug级别的日志")        #正常输出

输出:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cnaxWbwL-1620382958602)(C:\Users\Think\AppData\Roaming\Typora\typora-user-images\image-20210207172737757.png)]

日志输出解释:

第一部分:INFO-为日志级别;

第二部分:root-为默认的日志记录器名称;如果通过getlogger指定日志记录器名称,则root会改为指定的名称

第三部分:这是debug级别的日志-这是日志内容

代码示例2def log():
    logging.basicConfig(level=logging.DEBUG)
    logger = logging.getLogger('test')
    return logger

logger = log()
logger.debug("这是设置了日志记录器的样子")

输出:

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值