详解 python logging日志模块

详解 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入门教程实例:搭建一个静态博客

    下面是针对“Flask入门教程实例:搭建一个静态博客”的完整攻略。 1. 确保系统已经具备Python环境 在开始构建一个Flask应用程序之前,我们需要确保系统已经安装并配置好了Python环境。Python的版本推荐使用最新的稳定版本,如Python3.8或Python3.9。如果您还没有安装Python,可以在Python官网下载对应平台的安装包进行安…

    Flask 2023年5月15日
    00
  • 基于CentOS搭建Python Django环境过程解析

    下面就是关于如何基于CentOS搭建Python Django环境的完整攻略,包含了两条具体的示例说明。 准备工作 在开始之前,我们需要安装一些必要的软件,包括Python、pip、virtualenv和git等,这可以通过以下命令来完成: sudo yum install python3 python3-pip python3-devel git sudo…

    Flask 2023年5月15日
    00
  • flask设置cookie

    Flask中设置cookie可以通过make_response函数来实现。下面是具体的步骤: 步骤一:导入Flask和make_response from flask import Flask, make_response 步骤二:创建Flask app并定义路由 这里我们创建了一个hello函数,并将其绑定在URL路径为/的路由中。 app = Flask…

    Flask 2023年5月15日
    00
  • mvc框架打造笔记之wsgi协议的优缺点以及接口实现

    我来为你详细讲解“MVC框架打造笔记之WSGI协议的优缺点以及接口实现”的完整攻略。 WSGI协议的优缺点 优点 WSGI协议的优点主要有以下几点: WSGI协议是Python Web框架的标准化统一接口,可以让不同的Web框架之间互相兼容和共享资源。 WSGI协议提供了一种简单、轻量级的Web应用程序接口,可以让开发者轻松地构建Web应用程序,同时可以选择…

    Flask 2023年5月16日
    00
  • python3使用flask编写注册post接口的方法

    下面是我为你准备的详细讲解”Python3使用Flask编写注册POST接口的方法”的完整攻略。 1.概述 Flask是一个基于Python的轻量级Web开发框架,可以快速构建Web应用程序。本文将介绍如何使用Flask编写注册POST接口的方法。 2.准备工作 在开始编写代码前,首先需要安装Flask库。可以通过以下命令安装: pip install Fl…

    Flask 2023年5月15日
    00
  • html5 http的轮询和Websocket原理

    HTML5 HTTP轮询和Websocket是现代web开发中最重要的实时通信技术。它们都可以在客户端和服务器之间实现双向通信,但在实现方式和效率上有所不同。 HTML5 HTTP轮询 HTML5 HTTP轮询是一种通过HTTP长连接保持持久状态的技术。在轮询过程中,客户端在一定时间间隔内不断向服务器发送请求,服务器在收到请求后返回最新的数据。客户端会不断轮…

    Flask 2023年5月16日
    00
  • Python的Flask框架及Nginx实现静态文件访问限制功能

    讲解一下Python的Flask框架及Nginx如何实现静态文件访问限制功能的完整攻略。 1. Flask框架 1.1 Flask框架介绍 Flask是一款基于Python语言的轻量级Web框架,其主要特点是简单易学、灵活、可扩展以及具有良好的文档支持。Flask框架的主要功能包括路由映射、请求处理、会话管理、模板引擎等。 1.2 Flask框架安装 安装F…

    Flask 2023年5月16日
    00
  • 如何使用flask将模型部署为服务

    下面是使用Flask将模型部署为服务的完整攻略。 1. 准备工作 在使用Flask将模型部署为服务之前,我们需要完成以下准备工作: 安装Flask:可以使用pip install Flask命令进行安装。 准备模型:将训练好的模型保存为.h5或.pb格式文件,并将其导出为TensorFlow Saved Model。 2. 创建Flask应用 首先,我们需要…

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