日志处理
介绍
在Python中,
logging
模块提供了强大的日志记录功能,用于记录和输出程序运行时的各种消息和状态信息。通过使用logging
模块,您可以控制日志的级别、格式和输出位置,以便更好地了解和调试程序的行为。日志:记录软件运行发生的事件
程序测试、排错、用户的行为分析
python loggin 处理日志
五个日志等级
日志等级: 数值表示 描述
DEBUG 10 最详细的日志信息,开发过程中用于诊断问题
INFO 20 详细日志信息,记录关键节点的信息
WARNIMG 30(默认) 当前不期望的事情发生
ERROR 40 发生错误问题导致某些功能不能正常使用
CRITICAL 50 发生严重错误,导致程序不能继续运行
loggin日志的四大组件:
- 日志器 logger – 用来记录日志
- 处理器 handler – 用来指定输出的
- 过滤器 filter
- 格式器 formatter
使用
下面是关于logging
模块的详细介绍和使用方法:
- 导入
logging
模块:
import logging
- 配置日志:
在使用logging
模块之前,您需要配置日志的基本设置,如日志级别、输出格式和输出位置。可以通过以下方式进行配置:
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
上述配置将设置日志级别为DEBUG
,日志的格式为[时间戳] - [日志级别] - [日志消息]
。您可以根据需要自定义日志级别和格式。
- 记录日志消息:
使用logging
模块记录日志消息非常简单。常用的日志级别包括DEBUG
、INFO
、WARNING
、ERROR
和CRITICAL
。可以通过以下方式记录日志消息:
logging.debug('这是一条DEBUG级别的日志消息')
logging.info('这是一条INFO级别的日志消息')
logging.warning('这是一条WARNING级别的日志消息')
logging.error('这是一条ERROR级别的日志消息')
logging.critical('这是一条CRITICAL级别的日志消息')
- 输出日志:
默认情况下,日志消息会被输出到标准输出(控制台)。但您也可以将日志消息输出到文件或其他位置。以下是几种常用的输出方式:
- 输出到文件:
logging.basicConfig(filename='app.log', level=logging.DEBUG, format='%(asctime)s - %(levelname)s - %(message)s')
上述配置将日志消息输出到名为app.log
的文件中。
- 输出到多个位置:
logger = logging.getLogger()
logger.addHandler(logging.StreamHandler()) # 输出到控制台
logger.addHandler(logging.FileHandler('app.log')) # 输出到文件
上述配置将日志消息同时输出到控制台和文件中。
- 高级配置:
logging
模块还提供了许多高级功能,如日志回滚、过滤器和自定义处理程序等。您可以根据需要查阅官方文档来深入了解这些功能。
这是关于logging
模块的基本介绍和使用方法。通过使用logging
模块,您可以更好地控制和管理程序的日志,从而更轻松地调试和排查问题。希望对您有帮助!
例子:文章来源:https://www.toymoban.com/news/detail-516477.html
import logging
log_format = "%(asctime)s - %(filename)s - %(levelname)s:%(message)s"
logging.basicConfig(level=logging.DEBUG,format=log_format,filename="test.log")
logging.debug("this is debug")
logging.info("this is info")
logging.warning("this is warning")
logging.error("this is error")
第二个例子:同时输出到文件和屏幕文章来源地址https://www.toymoban.com/news/detail-516477.html
import logging
from logging import FileHandler,StreamHandler
from logging.handlers import TimedRotatingFileHandler,RotatingFileHandler
# 得到一个日志器,日志器用来记录日志
logger = logging.getLogger()
# 处理器
# 决定日志输出到哪里
# fh = FileHandler("sc.log")
#按大小轮转
# fh = RotatingFileHandler("sc_bak.log",maxBytes=100,backupCount=2)
#按时间轮转
fh = TimedRotatingFileHandler("sc_bak.log",when="S",interval=2,backupCount=2)
#输出到屏幕
ch = StreamHandler()
#格式器
log_format = "%(asctime)s - %(filename)s - %(levelname)s:%(message)s"
formatter = logging.Formatter(log_format)
#绑定formatter到handler
fh.setFormatter(formatter)
ch.setFormatter(formatter)
#将handler帮到logger对象上
logger.addHandler(fh)
logger.addHandler(ch)
logging.warning("this is warning")
import time
for i in range(10):
time.sleep(0.5)
logging.warning(f"this is warnning..{i}")
#日志器层级关系,类似继承
#没有传递参数,获取到的logger 称为 root logger
# logger2 = logging.getLogger("sc")
# logger2.error("this is error logger2")
到了这里,关于Python-日志模块笔记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!