美文网首页
使用Python中的logging模块打印日志信息

使用Python中的logging模块打印日志信息

作者: 几时见得清梦 | 来源:发表于2019-08-17 17:50 被阅读0次

    转载自:知乎:使用Python中logging模块,抛弃print吧

    logging模块作用及示例

    在实际应用中,日志文件十分重要,通过日志文件,我们知道程序运行的细节;同时,当程序出问题时,我们也可以通过日志快速定位问题所在。我们也需要输出一些中间信息,如运行时间、变量值等,以便于定位问题和调试。

    在以往我们习惯于用print()函数输出信息,如:

    print('Start reading database')
    records = model.read_recrods()
    print('records', records)
    print('Updating record ...')
    model.update_records(records)
    print('done')
    

    使用print()的缺点很明显,当正式运行程序时,需要将这些print()语句注释或删除,效率很低。

    为解决这个问题,可以使用logging模块:

    import logging
    logging.basicConfig(level=logging.INFO)
    logger = logging.getLogger(__name__)
    
    logger.info('Start reading database')
    # read database here
    records = {'john': 55, 'tom': 66}
    logger.debug('Records: %s', records)
    logger.info('Updating records ...')
    # update records here
    logger.info('Finish updating records')
    

    运行结果如下:

    INFO:__main__:Start reading database
    INFO:__main__:Updating records ...
    INFO:__main__:Finish updating records
    

    logging模块和print()的区别在于:logging模块可以通过改变level来控制一些语句是否输出。在上边代码中level被设置为INFO级别,下边改为DEBUG级别:

    logging.basicConfig(level=logging.DEBUG)
    

    得到的输出为:

    INFO:__main__:Start reading database
    DEBUG:__main__:Records: {'john': 55, 'tom': 66}
    INFO:__main__:Updating records ...
    INFO:__main__:Finish updating records
    

    logging模块介绍

    基本介绍

    1. logging 模块是python自带的一个包,因此在使用的时候,不必安装,只需要import即可。
    2. logging模块有5个level,分别是:debug,主要是查看一下程序运行的信息,一般是调试程序要看的信息;info,是我们看程序是否如预料执行的信息;warn,意料之外的,但是不影响程序运行;error和critical就是一些比较严重的问题,会影响程序运行。
      默认level是warn,这个时候debug级别和info级别就不会被输出到日志里了。如果想要看到这些信息,就需要进行一些设置。

    基础设置

    主要调用logging.basicConfig(***kwargs*)这个函数对logging进行设置。函数常用的参数如下:

    1. level:主要调整logging的级别
    2. filename:输出日志的路径
    3. filemode:直接写入还是追加写入
    4. format:输出的格式

    通过调整format,可以输出我们想要的格式,比如:

    import logging
    
    logging.basicConfig(format='%(asctime)s - %(message)s', datefmt='%d-%b-%y %H:%M:%S')
    logging.warning('Admin logged out')
    

    输出结果为:

    12-Jul-18 20:53:19 - Admin logged out
    

    这就是在format参数中设置了时间的,所以得到了时间。我们可以输出多种想要的信息,主要参考这里

    总结

    除非是自己写的小脚本中可以使用print()函数,其他情况下最好还是用logging模块来打印信息,输出日志。

    相关文章

      网友评论

          本文标题:使用Python中的logging模块打印日志信息

          本文链接:https://www.haomeiwen.com/subject/ezjksctx.html