优秀的编程知识分享平台

网站首页 > 技术文章 正文

Python logging模块:日志记录利器

nanyue 2024-12-29 04:54:47 技术文章 4 ℃

前言

日志记录(logging)是计算机编程中一种重要的调试和监控手段。它允许开发人员在程序运行过程中记录关键信息,以便在出现问题时进行追踪和分析。在Python中的logging模块是一种灵活而强大的日志记录工具,它可以帮助开发人员在应用程序中添加日志功能。本文将介绍Python logging的基本概念、使用方法以及一些高级技巧,包括如何设置日志级别、如何格式化日志输出、如何将日志输出到不同的目的地等等。通过学习本文,读者将能够更好地理解Python logging的工作原理,并能够在实际项目中应用这些知识来提高代码的可读性和可靠性。

一.使用

logging是Python内置的模块,不需要安装直接import logging就可以使用了

import logging

二.基本用法

  1. 创建日志记录器
import logging
logger = logging.getLogger("test_logging")
logger.setLevel(logging.DEBUG)

创建了一个test_logging的日志记录器,并设置了记录日志级别为 DEBUG。级别依次是 DEBUG、INFO、WARNING、ERROR 和 CRITICAL。

2.添加日志处理程序

file_handler = logging.FileHandler("test_logging.log") # 创建一个Handler对象,用于控制日志输出到哪里
formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(message)s")  # 设置日志输出格式
file_handler.setFormatter(formatter) # 设置Handler输出日志格式


logger.addHandler(file_handler)

Handler:为logger对象添加一个Handler对象,用于将日志信息输出到不同的目的地。Handler对象可以是StreamHandler(将日志输出到控制台)、FileHandler(将日志输出到文件)等。我们可以为每个Handler对象设置相同的Formatter对象,以确保日志信息的格式一致。

Formatter类来定义日志输出的格式。Formatter类提供了一些方法来格式化日志信息,例如%(asctime)s表示日志记录的时间,%(levelname)s表示日志级别,%(lineno)d表示行号,%(message)s表示日志消息等。我们可以根据需要自定义日志格式。

3.记录日志

logger.debug('这是一条DEBUG级别的日志信息')
logger.info('这是一条INFO级别的日志信息')
logger.warning('这是一条WARNING级别的日志信息')
logger.error('这是一条ERROR级别的日志信息')
logger.critical('这是一条CRITICAL级别的日志信息')

完整代码如下:

import logging


class Logger:
    def __init__(self, name):
        self.logger = logging.getLogger(name)
        self.logger.setLevel(logging.DEBUG)


        file_handler = logging.FileHandler(f"{name}.log")
        formatter = logging.Formatter("%(asctime)s - %(lineno)d -%(levelname)s - %(message)s")
        file_handler.setFormatter(formatter)


        self.logger.addHandler(file_handler)


    def debug(self, message):
        self.logger.debug(message)


    def info(self, message):
        self.logger.info(message)


    def warning(self, message):
        self.logger.warning(message)


    def error(self, message):
        self.logger.error(message)


    def critical(self, message):
        self.logger.critical(message)


if __name__ == "__main__":
    logger = Logger("test_logging")


    logger.debug("This is a debug message")
    logger.info("This is an info message")
    logger.warning("This is a warning message")
    logger.error("This is an error message")
    logger.critical("This is a critical message")


    logger.debug('这是一条DEBUG级别的日志信息')
    logger.info('这是一条INFO级别的日志信息')
    logger.warning('这是一条WARNING级别的日志信息')
    logger.error('这是一条ERROR级别的日志信息')
    logger.critical('这是一条CRITICAL级别的日志信息')

你可以把以上代码封装起来,导入你的代码里面去当记录日志的工具去使用,不过还有更简单的办法记录日志,就是使用第三方记录日志的库loguru,这个记录日志方便的很,

最近发表
标签列表