详解 python logging日志模块

yizhihongxing

详解 Python logging 日志模块

简介

Python logging 模块是一个强大且灵活的记录日志的模块,它允许你在你的 Python 应用程序中执行大规模的日志记录,并在日志消息的不同级别中进行分类和过滤。使用 Python logging 模块可以有效地记录调试信息、错误和异常信息、警告、信息等。

Python logging 模块支持以下功能:

  • 不同日志级别的过滤和记录
  • 可定制的格式化输出日志
  • 可配置记日志到文件或网络服务器
  • 可在代码中不同位置处理日志

在使用 Python logging 模块时,需要先导入 logging 模块,然后进行相关配置。

import logging
logger = logging.getLogger(__name__)

日志级别

Python logging 模块提供了 5 种不同的日志级别。

级别 描述
DEBUG 详细的程序运行日志,通常用于调试和问题追踪
INFO 普通的程序运行日志,记录应用程序运行时的常规事件
WARNING 表示有可能的错误或不正常的情况,但不会导致应用程序失败
ERROR 表示程序运行出现错误,通常会导致应用程序失败
CRITICAL 表示重大错误,可以导致应用程序崩溃和无响应

在编写日志时需要确保选择了适当的日志级别,因为选择了过高的级别会产生大量无用信息,反之,则会遗漏重要信息。推荐的做法是只记录你关心的的级别或更高级别的日志信息。同时,调试时可以降低日志级别,用于辅助调试。

日志记录

使用 Python logging 模块,可以通过定义 Logger 对象在应用程序的不同位置记录日志信息。一个 Logger 对象可与应用程序的不同部分相对应,每个区域都有一个特定名称。Logger 对象可用于记录消息,并根据所定义的严重性级别过滤消息。

记录日志时可以使用 log 方法,该方法有几个参数,其中最重要的是日志级别和要记录的消息。例如:

logger.warning('This is a warning message')

默认情况下,日志只记录到控制台。如果要将日志记录到文件,则需要通过 FileHandler 对象设置。例如:

import logging

# 创建日志对象
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)

# 创建日志处理器
file_handler = logging.FileHandler('app.log')
file_handler.setLevel(logging.INFO)

# 创建日志格式化对象
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)

# 为日志对象添加日志处理器
logger.addHandler(file_handler)

# 记录日志
logger.info('This is an info message')

上述代码先创建了一个日志对象 logger,设置了日志级别为 INFO。然后,创建一个 FileHandler 对象,将日志级别设置为 INFO,并将格式化器对象 formatter 绑定到 FileHandler 对象上。接下来,为日志对象 logger 添加日志处理器 file_handler。最后,使用 logger.info() 记录日志信息,此时,日志信息被记录到了文件 app.log 中。

示例说明

以下示例说明了如何使用 Python logging 模块记录日志。

示例一:日志详细信息打印到控制台

import logging

# 创建日志对象
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)

# 创建控制台处理器
console_handler = logging.StreamHandler()
console_handler.setLevel(logging.INFO)

# 创建日志格式化对象
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
console_handler.setFormatter(formatter)

# 为日志对象添加控制台处理器
logger.addHandler(console_handler)

# 记录日志
logger.info('This is an info message')
logger.warning('This is a warning message')

在此示例中,首先创建一个日志对象 logger,定义了日志的级别为 INFO。接下来,创建了一个控制台处理器 console_handler,该处理器会将日志详细信息打印到控制台上。然后,创建了日志格式化对象 formatter,并将其设置为控制台处理器的格式化对象。然后,将控制台处理器设置为日志对象的处理器。最后,使用日志对象 logger 记录了两条日志信息,一条 INFO 级别的信息和一条 WARNING 级别的信息。在控制台上输出该信息,记录如下:

2021-07-27 15:35:21,828 - __main__ - INFO - This is an info message
2021-07-27 15:35:21,828 - __main__ - WARNING - This is a warning message

在输出的日志信息中,分别包含了记录时间、日志记录器名称、日志级别和日志消息等信息。

示例二:日志详细信息记录到文件

import logging

# 创建日志对象
logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)

# 创建文件处理器
file_handler = logging.FileHandler('app.log')
file_handler.setLevel(logging.INFO)

# 创建日志格式化对象
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
file_handler.setFormatter(formatter)

# 为日志对象添加文件处理器
logger.addHandler(file_handler)

# 记录日志
logger.info('This is an info message')
logger.warning('This is a warning message')

在此示例中,首先创建一个日志对象 logger,定义了日志的级别为 INFO。接下来,创建了一个文件处理器 file_handler,将日志详细信息记录到文件 app.log 中。然后,设置了日志格式化对象,将其绑定到文件处理器上。最后,将文件处理器设置为日志对象的处理器。最终,使用日志对象 logger 记录了两条日志信息,一条 INFO 级别的信息和一条 WARNING 级别的信息。在文件 app.log 中记录如下:

2021-07-27 15:35:21,828 - __main__ - INFO - This is an info message
2021-07-27 15:35:21,828 - __main__ - WARNING - This is a warning message

在输出的日志信息中,分别包含了记录时间、日志记录器名称、日志级别和日志消息等信息。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解 python logging日志模块 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • flask的orm框架SQLAlchemy查询实现解析

    下面我会详细讲解如何使用flask中的ORM框架SQLAlchemy进行查询,并附上两个示例。 一、什么是ORM框架? ORM (Object-Relational Mapping) 是对象关系映射的缩写,是指通过将数据库中的关系数据转换为对象模型,将程序中的对象模型通过映射转换成关系数据。本质上,ORM框架是一种工具,用于连接Python对象和数据库表之间…

    Flask 2023年5月15日
    00
  • AJAX请求与跨域问题解决方法详解

    AJAX(异步 JavaScript 和 XML)是一种用于创建动态网页的技术,它无需页面重载即可向服务器发送请求并获取响应结果。虽然AJAX技术进一步提高了Web应用程序的交互性和性能,但它也带来了一些跨域问题。在下面的文章中,我们将探讨AJAX请求以及如何解决跨域问题。 AJAX请求的基本原理 AJAX的工作原理是通过JavaScript发起异步HTTP…

    Flask 2023年5月16日
    00
  • 详解 Flask 请求对象使用方法

    Flask 的请求对象(request)是在处理请求期间随请求上下文创建的。它允许您访问当前请求的数据,例如表单数据,URL 参数,请求头等。 下面是 Flask 请求对象的完整攻略: 导入 Flask 请求模块和 Flask 应用程序实例 from flask import Flask, request app = Flask(__name__) 请求上下…

    Flask 2023年3月13日
    00
  • Flask模板渲染与Get和Post请求详细介绍

    我来为您讲解 “Flask模板渲染与Get和Post请求详细介绍” 的攻略。 Flask模板渲染 在 Flask 中,可以使用 Jinja2 模板引擎渲染模板。 创建模板 首先,我们需要在项目文件夹下创建一个 templates 文件夹,并创建一个 HTML 模板文件。 例如,创建一个名为 index.html 的模板文件: <!doctype htm…

    Flask 2023年5月15日
    00
  • python miniWeb框架搭建过程详解

    当我们要搭建自己的网站,动态web框架是不可或缺的。Python是一种非常流行的编程语言,它拥有丰富的web框架,比如Flask、Django等。而如果我们想要更深入了解web框架的原理,也可以尝试手动搭建一个miniWeb框架。下面,我们将分为以下几个步骤,详细讲解Python miniWeb框架的搭建过程: 搭建服务器 首先,我们需要一个能够运行Pyth…

    Flask 2023年5月16日
    00
  • flask post获取前端请求参数的三种方式总结

    下面我将为你分享关于“flask post获取前端请求参数的三种方式总结”的完整攻略。 简介 Flask 是一个用 Python 编写的轻量级 Web 应用框架。它基于 Werkzeug WSGI 工具箱和 Jinja2 模板引擎。 Flask 提供了一个简单易用的方式来创建 Web 应用程序,并支持 RESTful 路由。 在 Web 开发中,经常需要从前…

    Flask 2023年5月15日
    00
  • python实现一个简单的web应用框架

    下面是关于Python实现一个简单的Web应用框架的完整攻略。 什么是Web应用框架? Web应用框架(web application framework)是一种软件框架,为用户提供了一个实现Web应用的基础结构,方便程序员开发Web应用。框架中的组件可以自动执行一些常用的任务,如数据验证、路由、用户认证、数据存储等,使得开发人员能够专注于业务逻辑的实现,而…

    Flask 2023年5月16日
    00
  • Python利用第三方模块实现压缩css文件

    下面我会详细讲解如何利用第三方模块实现压缩CSS文件的完整攻略。整个过程分为以下几个步骤: 步骤1:安装需要使用的第三方模块 在Python中,要实现CSS文件的压缩,我们需要使用到csscompressor这个第三方模块,因此首先需要用命令行安装该模块。在命令行中输入以下命令: pip install csscompressor 如无意外,安装将成功完成。…

    Flask 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部