迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Python >

在 Python 中的日志记录库的帮助下使用 Log4j

作者:迹忆客 最近更新:2023/06/14 浏览次数:

本文解释了什么是 log4j,它是如何工作的,以及我们为什么要使用它。 我们还将了解如何借助日志库在 Python 编程语言中使用 log4j。


Log4j 概述及其使用重要性

log4j 是程序员在应用程序中记录数据时用来帮助他们的一款软件。 而且,记录数据意味着记录在应用程序中执行的活动或操作。

出于安全原因,我们可以使用 log4j,例如查看各种身份验证。 但是,它也可以用于记录应用程序中发生的事情以进行调试。

或者大致了解应用程序一直在做什么。 例如,log4j 是 Java 编程语言中的一个框架,它是一个半构建应用程序。

同样,在 Python 中,我们使用了日志记录模块而不是 log4j。 日志记录是将应用程序操作和状态记录到辅助接口的过程。 换句话说,将您的程序操作写入一个文件,但是您如何开始记录呢?

那么,您需要熟悉日志记录级别。 每个日志库都允许您在特定级别锁定信息。 您必须了解五个主要的日志记录级别。

级别 说明
debug 调试级别用于开发过程或错误修复和故障排除。 所有特定于开发人员的信息都在这一层之下。
info 信息级别用于记录程序的任何重要默认操作,例如默认用户或系统查看操作。
warning 警告级别用于记录从长远来看可能成为错误的事件。 此日志记录级别应该可以帮助您追踪错误。
error 错误级别用于记录错误,错误是会以某种错误方式影响程序执行的错误。
critical 临界级别为世界末日; 该程序已死或已严重损坏。

在 Python 中的日志记录库的帮助下使用 Log4j

现在我们只是运行一个简单的基本代码,并没有这样的逻辑,但我们想向您展示一些理解,比如如何将所有日志写入一个文件。

让我们进入代码,首先配置日志系统,调用 basicConfig() 方法,并使用 filename 参数传入文件名。 Python 会将所有日志消息写入此文件; 如果它不存在,Python 将创建它。

后面的参数是filemode,意思是file mode就是说是append mode到write mode还是随便你放什么,默认情况下,文件会以append mode创建。 接下来是表示asctime、levelname、message等很多信息的格式。

asctime 基本上显示了它在这个与日志相关的特定文本文件中打印的时间类型。 第二个参数值是一个叫做levelname的东西; 这个参数告诉我们在执行过程中发生了什么样的错误。

该消息是我们试图在该日志消息中打印的所有消息。 我们正在使用 datefmt; 此参数将按特定顺序打印时间。

basicConfig() 函数有一个不同的属性,我们可以从这里阅读所有属性。

import logging

logging.basicConfig(filename='demo.txt',
                    filemode='a',
                    format='%(asctime)s %(levelname)s-%(message)s',
                    datefmt='%Y-%m-%d %H:%M:%S')
Now we have written a simple logic where we compare the percentile with some numbers and append some logs inside the text file.

for i in range(0,15):
    if i%2==0:
        logging.error('Log error message')
    elif i%3==0:
        logging.warning('Log warning message')
    elif i%5==0:
        logging.debug('Log debug message') 
    elif i%7==0:
        logging.critical('Log critical message')
    else:
        logging.info('Log info message')

输出:

2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 WARNING-Log warning message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 CRITICAL-Log critical message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 WARNING-Log warning message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 ERROR-Log error message
2022-09-01 23:21:28 ERROR-Log error message

运行程序后,我们可以注意到文本文件中没有添加信息和调试日志,因为默认情况下,levelname 调用错误,错误级别不显示信息和调试。

但是,我们可以通过在传递 logging.DEBUG 时使用 level 参数来使用其他级别。

level=logging.DEBUG

现在,如果我们运行并打开 demo.txt 文件,我们将看到所有日志消息,但如果我们将日志级别更新为 logging.ERROR,我们将看到错误和关键消息。

2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 INFO-Log info message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 WARNING-Log warning message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 DEBUG-Log debug message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 CRITICAL-Log critical message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 WARNING-Log warning message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 INFO-Log info message
2022-09-01 23:23:57 ERROR-Log error message
2022-09-01 23:23:57 INFO-Log info message
2022-09-01 23:23:57 ERROR-Log error message

让我们来看一个常见的问题,我们要将任何数字除以零。 要确定此操作,我们将使用 try 块。

如果操作失败,我们将进入 except 块并显示日志错误。

try:
    1/0
except:
    logging.error('Log zero division error occurs')

输出:

2022-09-02 00:29:48 ERROR-Log zero division error occurs

它是项目的重要组成部分,因为无论何时处理项目,您都可能必须编写这种日志记录机制。

完整的 Python 代码:

import logging

logging.basicConfig(filename='demo.txt',
                    filemode='w',
                    format='%(asctime)s %(levelname)s-%(message)s',
                    datefmt='%Y-%m-%d %H:%M:%S',
                    level=logging.DEBUG)

# for i in range(0,15):
#     if i%2==0:
#         logging.error('Log error message')
#     elif i%3==0:
#         logging.warning('Log warning message')
#     elif i%5==0:
#         logging.debug('Log debug message') 
#     elif i%7==0:
#         logging.critical('Log critical message')
#     else:
#         logging.info('Log info message')

try:
    1/0
except:
    logging.error('Log zero division error occurs')

上一篇:在 Python 中使用 setLevel() 设置日志级别

下一篇:没有了

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 Python 中使用 setLevel() 设置日志级别

发布时间:2023/06/14 浏览次数:82 分类:Python

Python 提供了一个单独的日志记录模块作为其标准库的一部分,以简化日志记录。 本文将讨论日志记录 setLevel 及其在 Python 中的工作方式。Python登录程序的功能

Python 日志记录传播

发布时间:2023/06/14 浏览次数:174 分类:Python

本文介绍了 LevelFilter 的使用,以显示如何将特定级别及更高级别(例如,INFO 及更高级别)的特定记录器名称的消息记录到特定的日志处理程序。Python 日志记录传播

Python 全局日志记录器

发布时间:2023/06/14 浏览次数:146 分类:Python

本文介绍 Python 中的日志记录模块。 它还介绍了日志记录级别及其重要性,从而生成了一个代码示例,演示了 Python 日志记录模块的全局使用。

在 Python 中可视化树

发布时间:2023/06/14 浏览次数:150 分类:Python

由于许多不同的原因,决策树是一种常见的监督学习技术。 决策树的优点包括我们可以将它们用于分类和回归,它们不需要特征缩放,而且决策树易于阅读。本文介绍了 Python 的 Graphviz 来显示

在 Python 中打印二叉树

发布时间:2023/06/14 浏览次数:101 分类:Python

本文将讨论二叉树以及我们如何使用它。 我们还将看到如何使用 Python 打印它。我们将了解在处理二叉树时使用的术语。 我们还将研究使用 Python 代码的二叉树示例。

Python 中的二维插值

发布时间:2023/06/14 浏览次数:149 分类:Python

本文展示了如何在 Python 中进行插值,并研究了不同的 2d 实现方法。 我们将讨论用于双变量插值的有用函数,例如 scipy.interpolate.interp2d、numpy.meshgrid 和 Python 中使用的用于平滑/插值 (RBF) 的径向

Python 中的 3D 插值

发布时间:2023/06/13 浏览次数:121 分类:Python

插值是在离散集的定义范围内构造新数据点的方法。 插值意味着找到点或曲线之间的值。从数学的角度来看,插值是获取位于其他已知数据点之间的特定未知数据点的值。插值的重要性

在 Python 中重新抛出异常

发布时间:2023/06/13 浏览次数:53 分类:Python

Python 为我们提供了 try-except 块来处理程序中的异常。 它还为我们提供了 raise 语句来手动抛出异常。本文将讨论如何在 Python 程序中重新抛出异常。在 Python 中抛出异常

Python 模拟引发异常

发布时间:2023/06/13 浏览次数:160 分类:Python

本文的主要目的是演示如何在使用单元测试库 unittest 时抛出异常。在 Python 中使用单元测试库 unittest 时抛出异常

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便