• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Python基础之logging模块知识总结

python 搞代码 4年前 (2022-01-07) 19次浏览 已收录 0个评论
文章目录[隐藏]

用Python写代码的时候,在想看的地方写个print xx 就能在控制台上显示打印信息,这样子就能知道它是什么了,但是当我需要看大量的地方或者在一个文件中查看的时候,这时候print就不大方便了,所以Python引入了logging模块来记录我想要的信息,需要的朋友可以参考下

前言

logging模块是Python内置的标准模块,主要用于输出脚本运行日志,可以设置输出日志的等级、日志保存路径等。

  • 可以通过设置不同的日志等级,在 release 版本中只输出重要信息,而不显示大量的调试信息
  • logging 可以决定将信息输出位置和内容
  • logging 线程更安全

一、日志级别

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

  • debug : 打印全部日志,详细信息,通常只出现在诊断问题
  • info : 打印info,warning,error,critical级别的日志,正常输出
  • warning : 打印warning,error,critical级别的日志,部分异常,不影响程序
  • error : 打印error,critical级别的日志,影响程序部分功能
  • critical : 打印critical级别,影响程序运行
 import logging  # 引入logging模块 # 将信息打印到控制台上 logging.debug("debug") logging.info("info") logging.warning("warning") logging.error("error") logging.critical("critical") [root@zijie ~]# python log.py WARNING:root:warning ERROR:root:error CRITICAL:root:critical 

默认生成的root logger的level是logging.WARNING,低于该级别不输出,如果要展示低于WARNING级别的内容,可以引入logging.basicConfig指定日志级别logging.basicConfig(level=logging.DEBUG)

二、basicConfig

格式 描述
filename 指定使用指定的文件名而不是 StreamHandler 创建 FileHandler。
filemode 如果指定 filename,则以此模式打开文件(‘r’、‘w’、‘a’)。默认为“a”。
format 为处理程序使用指定的格式字符串。
datefmt 使用 time.strftime() 所接受的指定日期/时间格式。
style 如果指定了格式,则对格式字符串使用此样式。’%’ 用于 printf 样式、'{‘ 用于 str.format()、’$’ 用于 string。默认为“%”。
level 将根记录器级别设置为指定的级别。默认生成的 root logger 的 level 是 logging.WARNING,低于该级别的就不输出了。级别排序:CRITICAL > ERROR > WARNING > INFO > DEBUG。(如果需要显示所有级别的内容,可将 level=logging.NOTSET)
stream 使用指定的流初始化 StreamHandler。注意,此参数与来源gaodaimacom搞#代%码网 filename 不兼容――如果两者都存在,则会抛出 ValueError。
handlers 如果指定,这应该是已经创建的处理程序的迭代,以便添加到根日志程序中。任何没有格式化程序集的处理程序都将被分配给在此函数中创建的默认格式化程序。注意,此参数与 filename 或 stream 不兼容――如果两者都存在,则会抛出 ValueError。
 import logging logging.basicConfig(level=logging.INFO, format='%(asctime)s %(filename)s %(levelname)s %(message)s', datefmt='%a %d %b %Y %H:%M:%S', filename='xuehui.log', filemode='w') logging.info('This is a info.') logging.debug('This is a debug message.') logging.warning('This is a warning.') 

三、日志写文件

 import logging import os.path import time #创建logger logger = logging.getLogger() logger.setLevel(logging.DEBUG) # 创建handler,用于写入日志文件 logdate = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time())) log_path = 'logs/' log_name = log_path + logdate + '.log' logfile = log_name fh = logging.FileHandler(logfile, mode='w') fh.setLevel(logging.DEBUG) # 定义输出格式 formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s") fh.setFormatter(formatter) # 将logger添加到handler logger.addHandler(fh) # 日志 logger.debug('this is a logger debug message') logger.info('this is a logger info message') logger.warning('this is a logger warning message') logger.error('this is a logger error message') logger.critical('this is a logger critical message') 

四、traceback记录

 import logging import os.path import time #创建logger logger = logging.getLogger() logger.setLevel(logging.DEBUG) # 创建handler,用于写入日志文件 logdate = time.strftime('%Y%m%d%H%M%S', time.localtime(time.time())) log_path = 'logs/' log_name = log_path + logdate + '.log' logfile = log_name fh = logging.FileHandler(logfile, mode='w') fh.setLevel(logging.DEBUG) # 定义输出格式 formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s") fh.setFormatter(formatter) # 将logger添加到handler logger.addHandler(fh) # 日志 try: open('/data/exist', 'rb') except BaseException as e: logger.error('Failed to open file', exc_info=True) 

到此这篇关于Python基础之logging模块知识总结的文章就介绍到这了,更多前端的相关知识总结的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Python基础之logging模块知识总结
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址