print日志
例如:
class Dog():
def __init__(self, color):
print("正在初始化....")
self.color = color
print("已经定义好了 color 属性")
self.ke = "dog"
print("已经定义好了 ke 属性")
try:
a = []
a[100]
except IndexError:
print("出现了错误。。。。。。。。。。。。。。。!!!!!!")
def run(self):
print("狗在跑")
dog = Dog("黑色")
print("已经定义好了 color 属性")
以上实例输出结果:
正在初始化....
已经定义好了 color 属性
已经定义好了 ke 属性
出现了错误。。。。。。。。。。。。。。。!!!!!!
已经定义好了 color 属性
logging日志
直接使用 logging 有以下问题:
- 没有产生info 信息
- 没有文件输出日志
- 没有时间和运行日志的位置。
例如:
import logging
class Dog():
def __init__(self, color):
logging.info("正在初始化")
self.color = color
logging.info("获取属性 color ")
self.ke = "dog"
logging.warning("警告,。。。。")
try:
a = []
a[100]
except IndexError:
logging.error("超出异常错误,这里有错误,赶紧来处理!!!!")
def run(self):
print("狗在跑")
dog = Dog("黑色")
# print("已经定义好了 color 属性")
以上实例输出结果:
WARNING:root:警告,。。。。
ERROR:root:超出异常错误,这里有错误,赶紧来处理!!!!
完美的日志处理
- 1, 日志收集器 logger:
- 2, 日志收集器级别 level
- 3, 日志处理器准备 handler
- 4, 日志处理器级别设置
- 5, 设置日志格式 format
- 6, 添加日志处理器
- 1,NOSET 0 等于没写,废话。
- 2,debug, 10, 调试,一些额外信息,备注,往往和主体功能无关。 日报里面的备注
- 3,info, 20 主体功能的信息。 日报,做了些啥?
- 4,warning, 30, 警告, 下次可能要出错了。 交警叔叔警告
- 5,error, 40, 犯错,违法。抢红灯
- 6, critical, 50, 极其严重。 抢银行
例如:
import logging
# 创建自己的日志收集器 logger
logger = logging.getLogger("pythonya")
# 设置日志收集器的日志级别
#定制输出渠道自己的日志级别,但是不能低于日志收集器的级别。 比如日志收集器为ERROR,那么此处为INFO就没有意义
logger.setLevel("INFO")
# 创建一个输出渠道 - 终端输出
handler = logging.StreamHandler()
handler.setLevel("INFO")
# 创建一个输出渠道 - 输出到文件
file_handler = logging.FileHandler("pythonya.log", encoding="utf-8") #显示在文件中
file_handler.setLevel("INFO")
# 处理器添加到收集器上。
logger.addHandler(handler)
logger.addHandler(file_handler)
# 设置日志输出格式 - Formatter类
fmt = logging.Formatter("time:%(asctime)s--%(levelname)s:%(name)s:%(message)s--%(filename)s---%(lineno)s")
handler.setFormatter(fmt)
file_handler.setFormatter(fmt)
logger.info("正常执行的逻辑")
logger.error("错误")
logger.debug("调试信息")
日志收集器(Logger类):
日志级别(Level):
debug、info、warning、error、critical(fatal)
默认是warning级别
输出渠道(Handle类):控制台(StreamHandle类)/文件(FileHandle类)
- 不同的渠道,可以输出不同级别的日志 --- 每个渠道都可以定制自己的输出日志级别
- 不同的渠道,可以输出不同的日志格式 --- 每个渠道都可以定制自己的输出日志格式
日志格式(Formatter类):输出的日志长啥样
logging模块自带一个日志收集器,名字叫做root,默认级别是WARNING