• python logging 日志


    loggingprint 区别,为什么需要logging

    在写脚本的过程中,为了调试程序,我们往往会写很多print打印输出以便用于验证,验证正确后往往会注释掉,一旦验证的地方比较多,再一一注释比较麻烦,这样logging就应运而生了,直接把验证信息存在一个文件中(例如在logging.basicConfig(里面设置filename= 'employee.log',or直接打印出出来,不用设置finame,就会直接打印在cmd窗口中。

       

       

    简单将日志打印到屏幕:

       

    import logging

    logging.debug('debug message')

    logging.info('info message')

    logging.warning('warning message')

    logging.error('error message')

    logging.critical('critical message')

    输出:

    WARNING:root:warning message

    ERROR:root:error message

    CRITICAL:root:critical message

    可见,默认情况下python的logging模块将日志打印到了标准输出中,且只显示了大于等于WARNING级别的日志,这说明默认的日志级别设置为WARNING(日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET),默认的日志格式为日志级别:Logger名称:用户输出消息。

       

    上面说的basicConfig方法可以满足你在绝大多数场景下的使用需求,但是basicConfig有一个 很大的缺点。

    调用basicConfig其实是给root logger添加了一个handler,这样当你的程序和别的使用了 logging的第三方模块一起工作时,会影响第三方模块的logger行为。这是由logger的继承特性决定的。

    所以我们需要使用真正的logger

    代码如下:

    import logging

    # 使用一个名字为fiblogger

    logger = logging.getLogger('fib')

    # 设置loggerlevelDEBUG

    logger.setLevel(logging.DEBUG)

    # 创建一个输出日志到控制台的StreamHandler

    hdr = logging.StreamHandler()

    formatter = logging.Formatter('[%(asctime)s] %(name)s:%(levelname)s: %(message)s')

    hdr.setFormatter(formatter)

    # logger添加上handler

    logger.addHandler(hdr)

    这样再使用logger来进行日志输出就行了。不过这样的坏处就是代码量比basicConfig要大不少。 所以我建议如果是非常简单的小脚本的话,直接使用basicConfig就可以,如果是稍微大一些 项目,建议认真配置好logger

  • 相关阅读:
    Ecshop商品批量上传,内容编码错误 您尝试查看的页面无法显示
    php 数组转化成字符串,并原样还原回数组
    PHP函数 curl_setopt
    <javascript学习笔记> javascript 获得url里参数。
    <yii 框架学习> <转> 关于yii数据库添加新字段之后model类的修改
    <yii 框架学习> 清空数据表
    <javascript学习笔记>javascript 实现隔行变色
    <javascript学习笔记> javascript 检查输入内容的长度。
    <php 代码积累 数组相关>
    <yii 框架学习> yii 框架改为中文提示
  • 原文地址:https://www.cnblogs.com/wuxiangli/p/10243564.html
Copyright © 2020-2023  润新知