自定义 异常类:
class sexExcption(Exception):
'''
自定义性别 异常类
'''
pass
try:
sex = input('请输入性别:')
if sex!='男' and sex!='女':
raise sexExcption('性别只能是男或女')#raise:抛出异常
except sexExcption as ex: #except:捕获异常
print(ex)
except Exception as ex:
print(ex)
finally:
print('程序结束..')
如图:
日志相关概念 用来记录程序中 重要的消息
日志--》对象
日志的作用:
1.程序调试
2.了解软件程序运行情况是否正常
3.软件程序运行故障分析与问题定位
最常用的:错误级别==>权重值 和描述:
DEBUG = 10 :最详细的日志信息,典型应用场景是 问题诊断
INFO = 20 :信息详细程度仅次于DEBUG,通常只记录关键节点信息,用于确认一切都是按照我们预期的那样进行工作
WARNING = 30 :当某些不期望的事情发生时记录的信息(如,磁盘可用空间较低),但是此时应用程序还是正常运行的
ERROR = 40 :由于一个更严重的问题导致某些功能不能正常运行时记录的信息
CRITICAL = 50 :当发生严重错误,导致应用程序不能继续运行时记录的信息
上面列表中的日志等级是从上到下依次升高的,即:DEBUG < INFO < WARNING < ERROR < CRITICAL,
而日志的信息量是依次减少的;
不常用:
ALERT
EMERGENCY
NOTICE
配置级别:两种写法
一:
import logging
logging.debug('this is a debug')
logging.info('this is a info')
logging.warning('this is a warning')
logging.error('this is a error')
logging.critical('this is a critical')
如图:
二:
logging.log(logging.DEBUG,'this is a debug')
logging.log(logging.INFO,'this is a info')
logging.log(logging.WARNING,'this is a warning')
logging.log(logging.ERROR,'this is a error')
logging.log(logging.CRITICAL,'this is a critical')
如图:
为什么有两条日志没有打印出来?
这是因为logging模块提供的日志记录函数所使用的日志器设置的日志级别是WARNING,
因此只有WARNING级别的日志记录以及大于它的ERROR和CRITICAL级别的日志记录被输出了,
而小于它的DEBUG和INFO级别的日志记录被丢弃了。
以DEBUG为衡量标准:
import logging
logging.basicConfig(level=logging.DEBUG) #level:指定日志级别
logging.log(logging.DEBUG,'this is a debug')
logging.log(logging.INFO,'this is a info')
logging.log(logging.WARNING,'this is a warning')
logging.log(logging.ERROR,'this is a error')
logging.log(logging.CRITICAL,'this is a critical')
如图:
一条日志信息对应的是一个事件的发生,而一个事件通常需要包括以下几个内容:
1.事件发生时间
2.事件发生位置
3.事件的严重程度--日志级别
4.事件内容
案例:
在一个新的模块生成日志和设置日志格式:
import logging
log_format = '%(asctime)s- %(levelname)s- %(message)s'
设置日志的时间格式:
DATE_FORMAT = "%m/%d/%Y %H:%M:%S %p"
logging.basicConfig(level=logging.DEBUG,
filename='my.log',
format=log_format,
datefmt=DATE_FORMAT)
logging.debug('this is a debug')
#修改数据内容:
logging.debug('%s is %d year old',"tom",20) #%s:字符 %d:数字
logging.info('this is a info')
logging.warning('this is a warning')
logging.error('this is a error')
logging.critical('this is a critical')
如图:
输出结果:
引入一个案例:
以UTF-8格式是读取不了的,改为GBK 格式
class sexExcption(Exception):
pass
try:
sex = input('请输入性别:')
if sex!='男' and sex!='女':
raise sexExcption('性别只能是男或女')
except sexExcption as ex:
logging.debug(ex)
except Exception as ex:
print(ex)
finally:
print('程序结束..')
如图:
日志录入:
完毕!
登录 | 立即注册