Python 中 Logging 模块使用详情

发表于:2022-3-07 09:43

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:python数据分析    来源:今日头条

  1.为什么要用logging模块
  在实际应用中,日志文件十分重要,通过日志文件,我们知道程序运行的细节;同时,当程序出问题时,我们也可以通过日志快速定位问题所在。在我们写程序时,也可以借助 logging 模块的输出信息来调试代码。
  但是很多人还是在程序中使用print()函数来输出一些信息,比如:
  print 'Start reading database'
  records = model.read_recrods()
  print '# records', records
  print 'Updating record ...'
  model.update_records(records)
  print 'done'

  这样用的话缺点很明显,当程序写好运行时,我们要把这些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

  你也许会问,这和print()函数有什么区别呢?区别就在于,logging模块可以通过改变level来控制一些语句是否被输出,比如当我们把level改成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

  2.logging模块介绍
  logging 模块是python自带的一个包,因此在使用的时候,不必安装,只需要import即可。有5个level,分别是debug,主要是查看一下程序运行的信息,一般是调试程序要看的信息;info,是我们看程序是否如预料执行的信息;warn,意料之外的,但是不影响程序运行;error和critical就是一些比较严重的问题,会影响程序运行。默认leval是warn,这个时候debug级别和info级别就不会被输出到日志里了。如果想要看到这些信息,就需要进行一些设置。
  3.基础设置
  我们主要调用basicConfig(***kwargs*)这个函数对logging进行设置。
  常用的参数如下:
  · level:主要调整logging的级别
  · filename:输出日志的路径
  · filemode:直接写入还是追加写入
  · 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参数中设置了时间的,所以得到了时间,我们可以输出多种想要的信息
  总结:
  本文主要介绍了logging模块的基础用法,除非是自己写的小脚本中我们使用print()函数,其他情况下最好还是用logging模块来打印信息,输出日志吧。

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号