python模块中的Logging

94 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第10天,点击查看活动详情

在学习代码过程中,遇到了记录日志即log的设置,一开始没看懂,所以专门记一篇笔记来记录下。

在项目开发中,都不可避免的使用到日志。没有日志虽然不会影响项目的正确运行,但是没有日志的项目可以说是不完整的。

Python 的 logging 模块提供了标准的日志接口,可以通过它存储各种格式的日志,日志记录提供了一组便利功能,用于简单的日志记录用法。

零.为什么要使用Logging模块

因为:

  1. 这样子所有python模块都可以参与日志记录
  2. 它提供了大量具有灵活性的功能

一.Logging中三个自带的模块

  1. StreamHandler

定义:能够将日志信息输出到sys.stdout, sys.stderr 或者类文件对象(也就是说它能够支持write()和flush()方法的对象) class logging.StreamHandler(stream=None)

  1. FileHandler

继承自StreamHandler,并且能将日志信息输出到磁盘文件上(即输出成一个文件) class logging.FileHandler(filename, mode='a', encoding=None, delay=False)

  1. NullHandler

空操作handler,logging模块自带的。无参

二.日志等级 日志级别等级排序:critical > error > warning > info > debug

级别越高打印的日志越少,反之亦然,即

  • debug : 打印全部的日志( notset 等同于 debug )
  • info : 打印 info, warning, error, critical 级别的日志
  • warning : 打印 warning, error, critical 级别的日志
  • error : 打印 error, critical 级别的日志
  • critical : 打印 critical 级别

三.主要操作 将日志信息记录到文件: 实例:

logging.basicConfig(filename='F:/example.log', level=logging.DEBUG)
logging.debug('This message should go to the log file')

实际操作中用到的

logger = logging.getLogger('xxx')  #记录什么文件的日志
logger.setLevel(logging.DEBUG)    #log的等级
formatter = logging.Formatter(   
    '%(asctime)s - %(name)s - %(leveltime)s: - %(message)s',     #时间格式
    datefmt='%Y-%m-%d %H:%M:%S')
fh = logging.FileHandler('xxx')    #日志文件主要记录在哪里
fh.setLevel(logging.DEBUG)     
fh.setFormatter(formatter)    #设置日期格式
ch = logging.StreamHandler()    #日志信息输出到对象里
ch.setLevel(logging.DEBUG)

使用的时候要import logging这个包,才能正常使用