”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > Python 日志记录

Python 日志记录

发布于2024-11-08
浏览:996

Logging con Python

日志,记录。它是什么以及如何使用 Python 注册事件

使用日志记录创建日志使我们能够在代码中获得很多功能和灵活性。在这篇简短的文章中,我向您展示了基础知识和更多内容,以开始将其合并到您的项目中。

什么是日志记录?还有日志?

日志记录是监视事件的一种方式。这些事件通过描述性消息可见,具有某些变量信息(某些变量的值或函数的结果)并且具有一定的重要性。
日志就像Python中的打印,但不同的是它们不一定打印在屏幕上,这些日志可以保存在已知的文件中。

我该如何使用它?

我们将使用 Python 自带的日志库:

import logging

logging.basicConfig(
    filename="log-de-hoy.log",
    encoding="utf-8",
    level=logging.DEBUG,
    format="%(asctime)s %(levelname)s %(message)s"
)

def add(a, b):
    try:
        result = a   b
        logging.info(f"Adding {a} and {b}. Result: {result}")
    except TypeError:
        result = None
        logging.error("The values should be numeric")
    return result

print(add(2, 3)) # 5
print(add(2, "3")) # None

如果我们执行此命令,则会生成一个名为 log-de-hoy.log 的文件:

2023-12-08 11:56:30,544 INFO Adding 2 and 3. Result: 5
2023-12-08 11:56:30,544 ERROR The values should be numeric

解释

??我们开始基本配置:使用logging.basicConfig我们声明:

  • 文件名:我们想要添加日志的特定文件的名称(例如,名称是 log-de-hoy.log,但理想情况下它应该有一个带有当天日期的描述性名称)
  • 编码:我们保存每个日志的格式类型
  • level:我们定义我们想要观察的级别。不同的级别在他们的文档中,你会看到它们有一个数值,logging.INFO是20。如果我们需要debug,至少我需要10。所以,使用logging.DEBUG我们确保注册值为 10 及以上的级别。
  • format:记录日志的格式,在本例中为消息级别日期

??我们用 level info

记录总和的结果

??我们用level error

注册一个int和一个string相加的错误

为什么要使用日志记录?

也许你已经可以想象到了,因为它是一个强大的工具,可以帮助我们快速识别异常。使用它的一些用例是:

  • ?调试和故障排除
  • ?性能监控与分析
  • ?审计与合规性
  • ?安全和异常检测

完成…

很容易实现,对吧?将其集成到任何项目中并停止使用这么多印刷品是否有好处?

日志记录模块提供的功能远不止我在这里展示的那么少。但这一点已经足够了!如果有必要,文档会很好地解释其他案例、方法、配置等。

版本声明 本文转载于:https://dev.to/javicerodriguez/logging-con-python-2j7m?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • MLP-混合器(理论)
    MLP-混合器(理论)
    TL;DR - This is the first article I am writing to report on my journey studying the MPL-Mixer architecture. It will cover the basics up to an intermed...
    编程 发布于2024-11-08
  • 为什么需要类型保护?探索不同类型及其用例
    为什么需要类型保护?探索不同类型及其用例
    为什么需要类型保护?探索不同类型及其用例 在 TypeScript 中,类型保护在使代码库更加可靠、对开发人员更友好方面发挥着重要作用。它们通过允许开发人员缩小类型来帮助确保类型安全,这有助于减少运行时错误并使代码更易于理解和维护。 什么是类型保护? 类型保护是对类型执行运行时检查的函数表达式,确保...
    编程 发布于2024-11-08
  • 如何在 CSS 中将 Div 居中
    如何在 CSS 中将 Div 居中
    弹性盒: .container { display: flex; justify-content: center; align-items: center; height: 300px; } 网格 .container { display: gr...
    编程 发布于2024-11-08
  • z-index如何控制网页上的元素堆叠?
    z-index如何控制网页上的元素堆叠?
    揭开 z-index 的神秘面纱:综合指南z-index 属性在确定 z-index 的堆叠顺序方面起着关键作用网页上的元素。然而,其复杂性可能会引起疑问。让我们深入研究 z-index 的真正运作方式并解决一些关键查询。z-index 的功能每个网页都包含一堆称为堆叠上下文的元素。 z-Index...
    编程 发布于2024-11-08
  • Python 3.3 中 Yield from Syntax 的实际应用和功能是什么?
    Python 3.3 中 Yield from Syntax 的实际应用和功能是什么?
    Yield From 语法在 Python 3.3 中的实际应用建立透明的数据交换yield from 语法在调用者和被调用者之间建立了直接连接子生成器,允许数据在它们之间无缝流动。与只能产生值的传统 for 循环不同,yield from 提供了双向通道。这类似于在客户端套接字之间建立临时连接,从...
    编程 发布于2024-11-08
  • 在 Python 中使用标准化剪切 (NCut) 进行无监督图像分割的指南
    在 Python 中使用标准化剪切 (NCut) 进行无监督图像分割的指南
    介绍 图像分割在理解和分析视觉数据方面起着至关重要的作用,而归一化剪切(NCut)是一种广泛使用的基于图的分割方法。在本文中,我们将探索如何使用 Microsoft Research 的数据集在 Python 中应用 NCut 进行无监督图像分割,重点是使用超像素提高分割质量。 数...
    编程 发布于2024-11-08
  • 如何在单个 FastAPI 端点中处理表单和 JSON 数据?
    如何在单个 FastAPI 端点中处理表单和 JSON 数据?
    如何创建可以接受表单或 JSON 正文的 FastAPI 端点?在 FastAPI 中,您可以创建可以接受表单或 JSON 正文的端点使用不同的方法。以下是几个选项:选项 1:使用依赖函数此选项涉及创建一个依赖函数,该函数检查 Content-Type 请求标头的值并使用 Starlette 的方法...
    编程 发布于2024-11-08
  • 什么时候应该在 JavaScript 中使用异步函数?
    什么时候应该在 JavaScript 中使用异步函数?
    JavaScript 中的异步函数:理解“async”和“await”简介在 JavaScript 的异步编程模型中,处理异步任务及其完成回调可能会导致复杂的代码结构。异步函数与“async”和“await”关键字一起提供了一种更加结构化和高效的方法。异步函数异步函数是在调用时不会阻塞主线程的函数。...
    编程 发布于2024-11-08
  • 艰难地学习 HTML 和 CSS(免费电子书)
    艰难地学习 HTML 和 CSS(免费电子书)
    如果您是前端开发人员,您正在使用 HTML 和 CSS。 然而,你可能不… ...记住所有 HTML 元素及其含义 …知道所有无效元素 ...了解所有具有可选开始或结束标签的元素(并使用它来编写 HTML–HTML) …了解元素类别 …了解所有 HTML 属性 …清楚所有全局属性 …知道哪些元素有哪...
    编程 发布于2024-11-08
  • 群有什么新鲜事
    群有什么新鲜事
    Laravel Herd 1.11 刚刚发布,他们引入了一些我们期待已久的有趣功能。 以下是 Herd 1.11 的内容摘要: Forge 集成:轻松将本地站点连接到 Laravel Forge 并直接通过 Herd UI 或 CLI 进行部署。 Profiler:使用 herd profile C...
    编程 发布于2024-11-08
  • 如何使用 usort 和自定义比较函数按特定键对多维数组进行排序?
    如何使用 usort 和自定义比较函数按特定键对多维数组进行排序?
    按键对多维数组排序处理多维数组时的一个常见任务是需要根据特定键对它们进行排序。例如,考虑以下数组:Array ( [0] => Array ( [iid] => 1 [invitee] => 174 [nid] => 3...
    编程 发布于2024-11-08
  • 计算中的幂等性:综合指南
    计算中的幂等性:综合指南
    在计算机科学和软件工程领域,某些概念和原理在确保系统的稳健性、可靠性和可预测性方面发挥着至关重要的作用。其中一个概念是幂等性,这个术语虽然看似深奥,但在各个领域都具有深远的影响,包括 Web 服务、数据库和函数式编程。本文深入探讨了幂等性的定义、重要性和实际应用,旨在全面了解其在现代计算中的作用。...
    编程 发布于2024-11-08
  • NodeList 到 Array:“Array.from()”真的是最快的吗?
    NodeList 到 Array:“Array.from()”真的是最快的吗?
    从 NodeList 转换为 Array:揭开最快的方法之前的讨论建议利用 Array.prototype.slice.call(nl)方法提供了从 NodeList 到 Array 的最有效的转换。然而,最近的基准测试揭示了一个惊人的不同现实。与流行的看法相反,传统的 for 循环方法 for(v...
    编程 发布于2024-11-08
  • 如何在 Android 应用程序中获取电池信息?
    如何在 Android 应用程序中获取电池信息?
    如何在 Android 中检索电池信息获取电池相关信息,例如电量和状态,对于开发 Android 应用程序至关重要有效地处理电池寿命。 Android 平台为此目的提供了 BatteryManager 类,但使用起来可能会造成混乱。理解 BatteryManager 类尽管有它的名字,Battery...
    编程 发布于2024-11-08
  • 用于 PDF 处理的 PHP 库:评估和用例指南
    用于 PDF 处理的 PHP 库:评估和用例指南
    PDF generation and processing is a common requirement in many web applications, especially for generating invoices, reports, or documents dynamically....
    编程 发布于2024-11-08

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3