logging日志模块学习

logging模块学习

日志模块:

​ 为了打印日志信息的模块。

import logging

#测试日志信息
logging.debug("debug message");

#信息日志信息
logging.info("info message");

#警告日志信息
logging.warn("warn message");

#错误日志信息
logging.error("error message");

#严重错误日志信息
logging.critical("critical message");

​ 只有日志信息级别为WARNING,logging模块才将日志打印到屏幕上。(即只有日志级别高于WARNING的日志才会输出)

img

日志级别及设置

级别 何时使用
DEBUG 详细信息,典型地调试问题时会感兴趣。
INFO 证明事情按预期工作。
WARNING 表明发生了一些意外,或者不久的将来会发生问题(如‘磁盘满了’)。软件还是在正常工作。
ERROR 由于更严重的问题,软件已不能执行一些功能了。
CRITICAL 严重错误,表明软件已不能继续运行了。

对日志的简单配置:

import logging

#logging模块的基础设置,filename为日志打印文件(没有会创建一个文件),level为日志等级。
logging.basicConfig(filename="logger.log", level=logging.INFO)
#basicCondig的level设置的是logging的最大等级,也就是这里的等级大于INFO的都输出

logging.debug("debug message");
logging.info("info message");
logging.warn("warn message");
logging.error("error message");
logging.critical("critical message");

设置了基础设置函数后,不会在命令框显示日志。而是会打印到文件中。

记录器、处理器、过滤器、格式化器

  • logger:记录器。产生日志信息,错误时会显示应用程序代码的接口。
  • handler:处理器。将处理器产生的日志记录发送到合适的目的地。
  • filter:过滤器。过滤日志信息。
  • formatter:格式化器。指明了日志格式。

它们之间的关系如下:

img

记录器Logger

​ 记录器logger是一个树形结构容器。在使用接口debug、warn、error、critical之前必须创建一个Logger实例。否则创建的是root logger,默认:日志级别(warn),处理器(StreamHandler),信息打印在屏幕上,格式化器(默认格式化输出)

# 创建方法
logger = logging.getLogger(logger_name)

修改记录器信息:

  • logger.setLevel(logging.ERROR):设置处理器日志级别。
  • logger.addHandler(handler_name):给记录器增加一个处理器。
  • logger.removeHandler(handler_name):删除记录器中的一个处理器。

处理器Handler

常见的处理器有:

  • StreamHandler
  • FileHandler

StreamHandler

# 创建方法
streamHandler = logging.StreamHandler(stream=None)

有以下方法:

  • streamHandler.setLevel(logging.WARN):指定日志级别。
  • streamHandler.setFormatter(formatter_name):设置一个格式化器。
  • streamHandler.addFilter(filter_name):添加一个过滤器。
  • streamHandler.removeFiltert(filter_name):删除一个过滤器。

FileHandler

# 创建方法
fileHandler = logging.FileHandler(filename, mode="a", encoding=None, delay=False)

格式化器Formatter

格式化器对输出日志信息做格式规范。规定了日志信息的规则、格式、内容。

# 创建方法
formatter = logging.Formatter(fmt=None, datefmt=None)

fmt是消息的格式化字符串。datefmt是日期的格式化字符串。默认fmt使用‘%(message)s’、默认datefmt使用ISO8601日期格式。

日志配置

  • 显式创建记录器Logger、处理器Handler和格式化器Formatter,并进行相关设置;

  • 通过简单方式进行配置,使用 basicConfig() 函数直接进行配置;

  • 通过配置文件进行配置,使用 fileConfig() 函数读取配置文件;

  • 通过配置字典进行配置,使用 dictConfig() 函数读取配置信息;

  • 通过网络进行配置,使用 listen() 函数进行网络配置。

basicConfig参数信息:

关键字 描述
filename 创建一个FileHandler,使用指定的文件名,而不是使用StreamHandler。
filemode 如果指明了文件名,指明打开文件的模式(如果没有指明filemode,默认为’a’)。
format handler使用指明的格式化字符串。
datefmt 使用指明的日期/时间格式。
level 指明根logger的级别。
stream 使用指明的流来初始化StreamHandler。该参数与’filename’不兼容,如果两个都有,'stream’被忽略。

有用的format格式

格式 描述
%(levelno)s 打印日志级别的数值
%(levelname)s 打印日志级别名称
%(pathname)s 打印当前执行程序的路径
%(filename)s 打印当前执行程序名称
%(funcName)s 打印日志的当前函数
%(lineno)d 打印日志的当前行号
%(asctime)s 打印日志的时间
%(thread)d 打印线程id
%(threadName)s 打印线程名称
%(process)d 打印进程ID
%(message)s 打印日志信息

猜你喜欢

转载自blog.csdn.net/qq_43477218/article/details/113097215