详解 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日

相关文章

  • Python + Flask 实现简单的验证码系统

    下面是关于“Python + Flask 实现简单的验证码系统”的完整攻略。 简介 验证码是一种用于区分人类用户和计算机程序的图像识别技术。在Web应用程序中,验证码被广泛地应用于注册、登录等需要用户提交信息的场景中,以保证提交表单的用户是真实的人类用户而不是自动化程序。本文将介绍如何使用Python语言和Flask框架实现一个简单的验证码系统。 环境设置 …

    Flask 2023年5月15日
    00
  • JS实现留言板功能

    JS实现留言板功能需要分为前端和后端两部分来完成。前端主要负责用户交互的展示和处理,后端主要负责数据的存储和传递。 前端实现 1. HTML和CSS 首先需要创建一个包含留言板所需元素的HTML文件,并使用CSS样式美化页面。留言板所需的元素可能包括标题、留言内容输入框、留言列表等等。需要注意的是,留言列表实际上是一个包含多个留言的容器,而每个留言又由多个元…

    Flask 2023年5月16日
    00
  • js实现录音上传功能

    下面我会为你详细讲解如何使用JS实现录音上传功能。 背景介绍 录音上传功能是一种常见的Web应用程序功能,它可以使用户在Web端录制音频并将其上传到服务器上。这种功能可以用于许多应用,比如在线音乐教育、在线语音识别、在线语音聊天等等。 实现录音上传功能需要使用Web开发中的一种技术,Web Audio API。Web Audio API提供了一个丰富、强大的…

    Flask 2023年5月16日
    00
  • Python Flask框架实现简单加法工具过程解析

    接下来我将详细讲解“Python Flask框架实现简单加法工具过程解析”的完整攻略。 Python Flask框架实现简单加法工具过程解析 什么是Python Flask框架 Flask是Python的一个微框架,它的核心是Werkzeug和Jinja2。 Flask的设计非常简单,代码易读易理解,适合用于小型Web应用的开发。它是一个轻量级的框架,具有易…

    Flask 2023年5月15日
    00
  • 使用Vue.js和Flask来构建一个单页的App的示例

    下面我会详细讲解使用Vue.js和Flask来构建一个单页App的示例,包含两个示例说明。 示例1:使用Vue.js和Flask来搭建前后端分离的Todo应用 前端Vue.js 使用Vue CLI创建项目 vue create todo-vue 安装axios npm install axios 编写Todo.vue组件 <template> &…

    Flask 2023年5月16日
    00
  • Nginx Gunicorn flask项目部署思路分析详解

    下面我会详细讲解“Nginx Gunicorn Flask 项目部署思路分析详解”的完整攻略。具体的分析思路和示例说明如下: Nginx Gunicorn Flask 项目部署思路分析 概述 在 Python Web 开发过程中,Nginx Gunicorn 和 Flask 都是非常常用的组件。Nginx 用于实现反向代理和负载均衡,Gunicorn 用于 …

    Flask 2023年5月15日
    00
  • python使用reportlab生成pdf实例

    下面是生成PDF文件的完整攻略。 1. 环境准备 在使用ReportLab生成PDF之前,需要先安装ReportLab库,可以使用pip命令进行安装,具体操作如下: pip install reportlab 2. 基本应用 下面通过两个示例,分别讲解ReportLab库的基础使用。 示例1 在本示例中,我们将使用ReportLab库创建一个简单的PDF文件…

    Flask 2023年5月16日
    00
  • Flask接收上传图片方法实现

    下面是Flask接收上传图片的完整攻略。 准备工作 首先,我们需要先安装Flask的插件Flask-Uploads,可以通过pip直接安装,命令如下: pip install Flask-Uploads 安装完成后,在Flask的应用中引入该插件: from flask_uploads import UploadSet, configure_uploads,…

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