python logging类库使用例子

当我们的 Python 代码出现了错误或异常时,通常会使用 Python 自带的 print 函数将错误信息输出到控制台。但在实际的项目开发中,控制台信息往往是不够直观和清晰的。这时候,我们就需要 Python 的 logging 类库来协助我们进行日志打印管理。

1. Logging 类库简介

Python 自带了 logging 库可以方便地进行日志打印管理,可以将日志输出到控制台、文件和远程服务器等多种方式。

2. Python logging 类库使用流程

2.1 导入 logging 包
我们需要先导入 Python 的 logging 包,并进行一些指定。

import logging
logging.basicConfig(filename="example.log", level=logging.DEBUG)

在创建了一个日志记录器后,需要设置日志的基本属性,比如日志文件、日志级别等。这里我们将日志输出到 example.log 文件,并将日志的级别设置为 DEBUG

2.2 使用 logging 输出日志
在我们需要输出日志信息的时候,使用 logging 就得心应手了。

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

这里我模拟了5种情况,分别为 DEBUG、INFO、WARNING、ERROR、CRITICAL,表示日志的不同级别。

这些级别按照从低到高的顺序排列:DEBUG、INFO、WARNING、ERROR、CRITICAL,当日志记录器的级别设置为某个级别时,比该级别低的消息将被忽略。

2.3 其他高级用法
在实际项目中,使用 logging 的机会更多是写到文件里面去,比如下面这种写法:

import logging

# 创建并配置 logger
logger = logging.getLogger("test")
logger.setLevel(logging.DEBUG)

# 创建文件目录
fh = logging.FileHandler(filename="example.log", mode="w", encoding="utf-8")
fh.setLevel(logging.DEBUG)

# 设置日志格式
formatter = logging.Formatter("%(asctime)s - %(levelname)s - %(filename)s - %(lineno)d - %(message)s")
fh.setFormatter(formatter)

# 将文件 handler 添加进 logger 中
logger.addHandler(fh)

# 记录日志
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")

3. 使用例子说明

为了更好地理解它在 Python 代码中的实际应用,下面我们给出两个 Python logging 类库使用的示例:

3.1 示例一:获取 IP 地址

import requests
import logging

logging.basicConfig(filename="example.log", filemode="w", level=logging.INFO)

try:
    url = "https://api.ipify.org?format=json"
    resp = requests.get(url, timeout=5)
    resp.raise_for_status()
    logging.info(f"Get IP: {resp.json()['ip']}")
except Exception as e:
    logging.error(f"Failed to get IP address: {e}")

这个示例代码使用 logging 包来输出请求 IP 地址的过程中可能出现的错误。比如请求超时异常需要记录错误日志,返回 IP 地址需要记录信息日志。当然为了更好地体验 logging 包的效果,我们将日志信息输出到文件 example.log 中。

3.2 示例二:模拟一些实际的场景

import logging
import time

logging.basicConfig(level=logging.DEBUG,
                    format="%(asctime)s - %(levelname)s - %(message)s")
logger = logging.getLogger(__name__)

def process():
    logger.debug("Start processing")

    for i in range(3):
        logger.info(f"Processing task {i}")
        time.sleep(0.5) # 模拟任务执行时间

    logger.warning("Processing completed")

if __name__ == "__main__":
    process()

这个示例代码模拟了一个任务流程,我们在执行任务的时候无须使用 print 来输出当前的任务步骤。在任务执行过程中输出相应的日志级别,到最后再输出任务结束即可。

4. Logging 类库结论

日志管理是应用系统开发中一个重要组份,可以做到应用系统重大事件的记录和后期分析。Python 语音中的 logging 包提供了便捷的日志分级,日志输出等处理功能。日志的处理过程中包含 handler 表示处理器,格式化等重要概念。有必要我们学会日志级别的分配和管理,使我们开发的应用系统具有良好的可维护性和可扩展性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python logging类库使用例子 - Python技术站

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

相关文章

  • Python入门学习指南分享

    Python入门学习指南分享 前言 Python是近年来越来越受欢迎的一门编程语言。它简单易学、语法简洁,适用于各种领域,如Web开发、人工智能、数据分析等。本文将为初学者提供一份完整的Python入门学习指南,帮助你从零开始成为Python编程的专家。 学习步骤 1.了解Python Python是一种高级编程语言,由Guido van Rossum于19…

    人工智能概论 2023年5月25日
    00
  • Perl5 OOP学习笔记第1/2页

    如果想学习 Perl5 面向对象编程(OOP),可以参考下面的攻略: 第1页 什么是面向对象编程? 对象是什么? 对象是程序中的一个实体,它包括一些属性和可以对这些属性执行的操作。 面向对象编程(OOP)是什么? OOP 是一种编程范式,使用面向对象的方式描述和解决问题。在 OOP 中,程序被组织成对象,对象之间可以互相交互来完成任务。 这里还需要注意 OO…

    人工智能概论 2023年5月25日
    00
  • django创建最简单HTML页面跳转方法

    下面是详细的攻略: 确认Django环境已经搭建 在使用Django创建HTML页面跳转之前,需要确保Django环境已经搭建成功。 第一步:创建Django项目 创建Django项目,使用命令行工具,执行以下命令: django-admin startproject projectname 其中,projectname为你的项目名称。 第二步: 创建Dja…

    人工智能概论 2023年5月25日
    00
  • Java基于FFmpeg实现Mp4视频转GIF

    下面提供一份“Java基于FFmpeg实现Mp4视频转GIF”的完整攻略,具体过程如下: 安装FFmpeg库 第一步是需要下载和安装FFmpeg库。FFmpeg是一个开源库,支持大多数主流平台上的音频和视频格式。可以从官网下载安装包,并按照官方文档安装。 如果你使用的是Linux操作系统,则可在终端中输入以下命令进行安装: sudo apt-get inst…

    人工智能概览 2023年5月25日
    00
  • java程序员自己的图片转文字OCR识图工具分享

    我可以为您提供Java程序员自己的图片转文字OCR识图工具分享的完整攻略。下面是具体的步骤: Step 1:安装Tesseract OCR引擎 Tesseract OCR是Google开源的OCR引擎,可以进行文字识别,Java程序员可以将其封装成Java调用库。在开始这个工具的开发之前,我们需要先安装Tesseract OCR引擎。具体的安装步骤可以参考T…

    人工智能概览 2023年5月25日
    00
  • django模型动态修改参数,增加 filter 字段的方式

    在 Django 中,我们可以使用模型动态修改参数来增加 filter 字段。以下是完整的攻略: 先创建一个 Django 模型,并添加基本参数,如字段、关联表和设置项。 from django.db import models class Article(models.Model): title = models.CharField(max_length=…

    人工智能概览 2023年5月25日
    00
  • Mongoose find 查询返回json数据处理方式

    当使用Mongoose对MongoDB进行查询时,通过调用find()函数可以返回一组符合查询条件的文档,结果以JSON的格式返回。本文将详细讲解如何对这些JSON数据进行处理。 1. 使用then()方法处理查询结果 在Mongoose查询到数据后,会通过Promise的形式将结果返回。我们可以使用Promise的then()方法来处理该结果。下面是一个示…

    人工智能概论 2023年5月25日
    00
  • C++中的数据对齐示例详解

    下面是C++中的数据对齐的详解攻略: 数据对齐 在C++中,数据对齐是一种内存对齐方式,它可以提高程序的执行效率,减少CPU的访问时间和空间。具体地说,数据对齐是指对于变量在内存中的存储位置进行限定,要求变量的地址必须是某个值的倍数,这个值通常称为“对齐值”。 对齐原则 在C++中,数据对齐遵循以下原则: 结构体中的第一个数据成员的偏移量为0。 结构体中其他…

    人工智能概览 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部