- 日志模块 导入标准库 import logging
- 日志配置
logging.basicConfig(level=logging.INFO,#日志的级别 必须设置
format="%(asctime)s--%(name)s--%(levelname)s--%(message)s")
#打印的日志格式
logging.debug("debug级别的,下边的日志都打印输出")
logging.info("该级别设置之后,debug级别的不打印")
logging.warning("打印warning 向下的日志")
logging.error("打印error 向下的日志!!!")
logging.critical("输出啥你看点啥吧")
-
日志格式内容
%(levelno)s:打印日志级别的数值
%(levelname)s:打印日志级别的名称
%(pathname)s:打印当前执行程序的路径
%(filename)s:打印当前执行程序名
%(funcName)s:打印日志的当前函数
%(lineno)d:打印日志的当前行号
%(asctime)s:打印日志的时间
%(thread)d:打印线程ID
%(threadName)s:打印线程名称
%(process)d:打印进程ID
%(message)s:打印日志信息 -
日志设置同时控制台展示及输出到文件
-
使用FileHander和StreamHandler的对象用于处理文件输出和控制台输出
import logging
logger = logging.getLogger("my_log")
logger.setLevel(level=logging.INFO) # 输出log级别的信息
#使日志输出到文件
handler = logging.FileHandler("./logs/log.txt",maxBytes=1 * 1024, backupCount=10)# 指定log文件大小及保存个数
handler.setLevel(logging.INFO)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(message)s')
handler.setFormatter(formatter)
#设置日志输出到控制台上
shlog = logging.StreamHandler()
shlog.setLevel(logging.INFO)
# 将log信息同时添加文件处理器和控制台
logger.addHandler(handler)
logger.addHandler(shlog)
# 打印日志
logger.info("特务1")
logger.debug("抓特务")
logger.warning("特务没抓找il.")
logger.info("继续抓")
- [ ] 异常日志记录
try:
# 这里打开一个并不存在的文件
open("sklearn.txt", "rb")
except Exception:
# exc_info=True 一并日志记录系统抛出的异常信息,False则不记录
logger.error("Faild to open sklearn.txt,Exception as following:", exc_info=True)
logger.info("Finish")
## 下边代码是logging 模块的异常代码处理格式,其中exc_info=True ,这个是将系统的异常信息也一并打印出来,便于跟踪log信息
def exception(self, msg, *args, exc_info=True, **kwargs):
"""
Convenience method for logging an ERROR with exception information.
"""
self.error(msg, *args, exc_info=exc_info, **kwargs)