使用python的logging模块可构建结构化日志系统,首先导入模块并配置logger,设置日志级别和格式,如logging.basicconfig();其次可通过filehandler将日志输出到文件;还可使用logging.config通过配置文件灵活管理日志设置;此外支持高级功能如filters、自定义handlers;集成时应确保一致性、可配置性和性能优化;也可选用loguru或structlog等第三方库简化操作;最后结合elk、splunk等工具实现日志分析与监控。

使用Python进行日志记录,是为了更好地追踪程序运行状态,排查问题,以及进行性能监控。它不仅仅是简单地打印信息,而是构建一个结构化的、可配置的、可扩展的系统。

解决方案
Python自带的
logging
logging
logging.basicConfig()
立即学习“Python免费学习笔记(深入)”;

import logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)
logger.info('程序开始运行')
try:
result = 10 / 0
except Exception as e:
logger.error('发生异常', exc_info=True) # 记录完整的异常信息
logger.info('程序运行结束')这段代码展示了如何设置一个基本的logger,并记录信息、错误和异常。
level
format
exc_info=True
如何选择合适的日志级别?

日志级别决定了哪些信息会被记录。
logging
DEBUG
INFO
WARNING
ERROR
CRITICAL
选择合适的日志级别取决于你的需求。在开发阶段,可以使用
DEBUG
INFO
WARNING
DEBUG
如何将日志输出到文件?
默认情况下,
logging
FileHandler
import logging
# 创建一个logger
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
# 创建一个FileHandler,将日志写入文件
file_handler = logging.FileHandler('my_app.log')
file_handler.setLevel(logging.DEBUG)
# 创建一个Formatter,定义日志格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)
# 将FileHandler添加到logger
logger.addHandler(file_handler)
logger.info('程序开始运行')这段代码创建了一个
FileHandler
my_app.log
setLevel()
FileHandler
setFormatter()
如何使用logging.config进行配置?
logging.config
fileConfig()
dictConfig()
import logging.config
logging.config.fileConfig('logging.conf') # 从文件加载配置
logger = logging.getLogger('my_app') # 获取logger,名称与配置文件中的一致
logger.info('程序开始运行')logging.conf
[loggers]
keys=root,my_app
[handlers]
keys=consoleHandler,fileHandler
[formatters]
keys=myFormatter
[logger_root]
level=WARNING
handlers=consoleHandler
[logger_my_app]
level=DEBUG
handlers=fileHandler
qualname=my_app
propagate=0
[handler_consoleHandler]
class=StreamHandler
level=INFO
formatter=myFormatter
args=(sys.stdout,)
[handler_fileHandler]
class=FileHandler
level=DEBUG
formatter=myFormatter
args=('my_app.log',)
[formatter_myFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s使用配置文件可以更方便地管理日志记录器的配置,例如日志级别、输出格式、输出目标等。
如何进行高级日志记录?
除了基本的日志记录功能,
logging
例如,可以使用
Filter
import logging
class MyFilter(logging.Filter):
def filter(self, record):
return record.module == 'my_module' # 只记录my_module模块的日志
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
handler = logging.StreamHandler()
handler.addFilter(MyFilter())
logger.addHandler(handler)
logger.debug('This is a debug message') # 不会被记录,因为模块名不是my_module
logger = logging.getLogger('my_module') # 获取名为my_module的logger
logger.debug('This is a debug message from my_module') # 会被记录如何集成日志记录到现有的项目中?
将日志记录集成到现有项目中需要考虑以下几点:
一个好的实践是在每个模块中创建一个logger,并使用模块名作为logger的名称。这样可以方便地追踪日志信息的来源。
如何使用第三方库简化日志记录?
除了
logging
loguru
structlog
loguru
from loguru import logger
logger.add("file.log", rotation="500 MB") # 每天生成一个新的日志文件
logger.debug("That's it, beautiful and simple logging!")structlog
import structlog
log = structlog.get_logger()
log.info("User logged in", user="john.doe", id=123)这些第三方库可以根据你的需求选择使用。
如何进行日志分析和监控?
日志分析和监控是日志记录的重要组成部分。通过分析日志信息,可以了解程序的运行状态、性能瓶颈和潜在问题。
常用的日志分析工具包括:
这些工具可以帮助你收集、存储、分析和可视化日志信息。
总而言之,Python的日志记录是一个强大而灵活的工具,可以帮助你更好地理解和管理你的程序。通过选择合适的日志级别、输出格式和工具,你可以构建一个高效的日志记录系统,提高程序的可靠性和可维护性。
以上就是Python如何做日志记录?调试与监控技巧的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号