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日

相关文章

  • redis 限制内存使用大小的实现

    Redis是一个使用内存作为数据存储方式的高性能key-value数据库。由于内存资源的限制,设置使用Redis时需要对其进行一定的内存限制,以避免Redis使用过多内存导致服务器宕机。 下面将详细讲解Redis限制内存使用大小的实现攻略。 使用maxmemory配置项 Redis提供了maxmemory配置项,用于设置Redis所使用的内存上限。该配置项的…

    人工智能概览 2023年5月25日
    00
  • 利用Python通过获取剪切板数据实现百度划词搜索功能

    实现Python通过获取剪切板数据实现百度划词搜索功能,一般分为以下几个步骤: 1.安装必要的库:要实现这项任务,需要安装pyperclip和requests库。它们可以通过pip进行安装,命令如下: $ pip install pyperclip requests 2.剪切板数据获取:通过调用pyperclip库中的方法get()可以获取系统剪切板上的数据…

    人工智能概览 2023年5月25日
    00
  • 在Mac OS上安装使用MongoDB的教程

    以下是在Mac OS上安装使用MongoDB的教程和示例: 安装MongoDB 安装MongoDB有两种方式:使用Homebrew安装或者直接下载安装包进行安装。 使用Homebrew安装MongoDB 首先需要安装Homebrew,可以在Terminal中输入以下命令进行安装: /usr/bin/ruby -e "$(curl -fsSL htt…

    人工智能概论 2023年5月25日
    00
  • 三星note7到底怎么样?三星Galaxy Note 7最深度评测

    三星Note7评测攻略 1. 产品概述 三星Galaxy Note 7作为一款旗舰级别的智能手机,在其发布后备受关注。这款手机采用了双曲面屏幕设计、虹膜识别技术、摄像头升级等众多特点,但同时也在电池问题上引发了安全问题。 2. 设计 三星Note7采用了双曲面屏幕设计,给人带来了非常独特的视觉体验。背面采用了玻璃材质,加强了质感和手感。同时,三星Note7还…

    人工智能概览 2023年5月25日
    00
  • 详解docker-compose.yml文件常用模版命令

    下面是关于docker-compose.yml文件常用模板命令的详解攻略。 什么是docker-compose.yml文件? docker-compose.yml文件是Docker Compose工具的核心配置文件,由YAML语言编写。它可以定义一组关联的Docker容器,组合它们为一个应用,并对它们进行管理。 常用模板命令 version 该命令指定doc…

    人工智能概览 2023年5月25日
    00
  • Python SDK实现私服上传下载的示例

    Python SDK是Python语言的一套软件开发工具包,包含了丰富的库文件和工具,可以用来实现各种各样的应用程序开发。本文将详细介绍如何使用Python SDK实现私服上传下载的示例。 环境准备 在开始之前,需要先准备好以下环境: Python 2.7或3.x版本 PIP包管理器 SDK安装 运行以下命令安装 Python SDK: pip instal…

    人工智能概论 2023年5月25日
    00
  • 流行的软件测试工具介绍

    流行的软件测试工具介绍 在软件开发和测试过程中,使用合适的测试工具可以提高测试效率和测试质量。以下是一些流行的软件测试工具的介绍及其使用场景和示例。 功能测试工具 1. Selenium Selenium 是一款功能测试工具,可以模拟用户在多种不同浏览器上操作网页,支持多种开发语言。例如,可以使用 Selenium 对网站进行自动化测试,验证网站是否符合用户…

    人工智能概论 2023年5月25日
    00
  • django实现将修改好的新模型写入数据库

    下面是完整攻略。 第一步:定义数据模型 在 models.py 文件中定义数据模型,并使用 python manage.py makemigrations 命令生成新的迁移文件。例如,我们定义一个 Book 模型: from django.db import models class Book(models.Model): title = models.Ch…

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