logging是python的日志库。我们在部署项目的时候, 不可能直接将所有的信息都输出到控制台中,所以就需要用它,把信息存储到日志文件中, 方便我们查看程序的运行情况,也可以在出现故障的时候,通过查找日志,快速定位。
咱们先来说说日志级别,默认是有六种日志级别:
级别 | 数值 |
---|---|
DEBUG | 10 |
INFO | 20 |
WARNING | 30 |
ERROR | 40 |
CRITIAL | 50 |
默认是WARNING,只有WARNING、ERROR和CRITICAL级别的日志消息会被记录,而DEBUG和INFO级别的日志消息则不会被记录。你可以通过设置日志级别来改变默认级别。
接下来咱们说一下其他的东西:
logging模块采用了模块化设计,主要包含四种组件:
Loggers:记录器,提供应用程序代码能直接使用的接口
Handers:处理器,将记录器产生的日志发送至目的地
Filters:过滤器,提供更好的粒度控制,决定哪些日志会被输出
Formatters:格式化其,设置日志内容的组成结构和消息字段
1.Handers:将日志分发到不同的目的地。可以是文件、标准输出、邮件、或者通过socket、http等协议发送到任何地方
ini
StreamHandler
标准输出
创建方法:
sh=logging.StreamHandler(stream=None)
FileHandler 将日志保存到磁盘文件的处理器
创建方法:
fh=logging.FileHandler(filename,mode="a",encoding=None,delay=False)
setFormatter():设置当前handler对象使用的消息格式
2.Formatters
perl
构造方法:
ft=logging.Formatter.__init__(fmt=None,datefmt=None,style='%')
datefmt默认是%Y-%m-%d %H:%M:%s样式的 style参数默认为百分符%
最后,附上我测试的代码块
css
import logging
from common.yaml_util import get_custom_dir
def setup_logger(name,log_file=None,level=logging.DEBUG):
logger = logging.getLogger(name)
#默认情况下,日志记录器的级别为 WARNING,
logger.setLevel(level)
# 创建StreamHandler对象并设置日志级别 输出到控制台
stream_handler = logging.StreamHandler()
stream_handler.setLevel(logging.DEBUG)
# 设置日志格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
stream_handler.setFormatter(formatter)
# 将StreamHandler添加到Logger对象中
logger.addHandler(stream_handler)
# print(f"StreamHandler的日志级别: {stream_handler.level}")
if log_file:
file_handler = logging.FileHandler(log_file)
file_handler.setLevel(logging.DEBUG)
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
# print(f"FileHandler的日志级别: {file_handler.level}")
return logger