python学习笔记8-日志和异常捕获

先记录一下,后面学习的时候再补充。
参考这篇文章:
(转):https://www.cnblogs.com/xianyulouie/p/11041777.html

一般在代码中都会有异常捕获和日志记录,两者互相配合。当然日志除了记录异常也可以记录执行情况,用途更多。

日志需要引用logging模块,日志信息有级别之分,如果设定了日志级别,则在该级别下的信息不会被记录,如下:

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

debug : 打印全部的日志,详细的信息,通常只出现在诊断问题上

info : 打印info,warning,error,critical级别的日志,确认一切按预期运行

warning : 打印warning,error,critical级别的日志,一个迹象表明,一些意想不到的事情发生了,或表明一些问题在不久的将来(例如。磁盘空间低”),这个软件还能按预期工作

error : 打印error,critical级别的日志,更严重的问题,软件没能执行一些功能

critical : 打印critical级别,一个严重的错误,这表明程序本身可能无法继续运行

使用方式如下:
1.简单使用,直接在try except中使用,可以发现异常时记录。

import logging
#直接当print()使用,区别是logging一般是红色字体,且出现位置不定
logging.debug("测试打印")
#日志的基本设置,一般简单使用都不需要设
logging.basicConfig(level=logging.DEBUG, #设置日志级别
format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s', #设置日志格式,依次是时间,文件名,问题行号,日志级别,具体信息
datefmt='%a, %d %b %Y %H:%M:%S',  #设置日期格式
filename='test.log',  #设置日志文件名
filemode='w')	#设置日志权限

#异常捕获
#try except else finally
#如果要更详细还可以引用  import traceback ,然后在except里加 print(traceback.format_exc())
#可以自由组合使用
try:					#第一步尝试
      print(0/0)
except Exception as e:	#第二步如果有异常尝试
      print('有错误 ',e)
      #print(traceback.format_exc())显示在代码行的错误
      logging.debug(e)#日志一般用在这里
except IOError as f:	#第二步分的细一些,还可以再自定错误类型再记录
      print('IO有错误 ',f)
else:					#第二步没有异常尝试
      print(1)
finally:				#第三步尝试
      print(2)

2.复杂一点使用,就是定义一个log文件,然后创建一个handle往里写日志。


import os.path
import time
import logging
# 创建一个logger
logger = logging.getLogger()
logger.setLevel(logging.INFO)  # Log等级总开关

# 创建一个handler,用于写入日志文件
rq = time.strftime('%Y%m%d%H%M', time.localtime(time.time()))
log_path = os.path.dirname(os.getcwd()) + '/Logs/'#获取当前目录的上级目录加/logs/
log_name = log_path + rq + '.log'
logfile = log_name
fh = logging.FileHandler(logfile, mode='w')#创建一个日志处理工具
fh.setLevel(logging.DEBUG)  # 输出到file的log等级的开关

# 定义handler的输出格式
formatter = logging.Formatter("%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s")
fh.setFormatter(formatter)
logger.addHandler(fh)
# 使用logger.XX来记录错误,这里的"error"可以根据所需要的级别进行修改
try:
    open('/path/to/does/not/exist', 'rb')
except (SystemExit, KeyboardInterrupt):
    raise
except Exception, e:
    logger.error('Failed to open file', exc_info=True)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值