加入收藏 | 设为首页 | 会员中心 | 我要投稿 大连站长网 (https://www.0411zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

信息量大且结构便利的日志调试和跟踪应用程序实践的理想方式

发布时间:2021-05-25 11:11:37 所属栏目:语言 来源:互联网
导读:关于Python日志记录库,大部分开发人员都善于解释如何设置一个记录系统用于一个Python脚本。但是,几乎找不到如何设置Python日志记录库以在整个应用程序范围内使用,以及如何在所有项目模块中舒适地正确集成和共享日志记录信息的解释器。 在本文中,我将分

关于Python日志记录库,大部分开发人员都善于解释如何设置一个记录系统用于一个Python脚本。但是,几乎找不到如何设置Python日志记录库以在整个应用程序范围内使用,以及如何在所有项目模块中舒适地正确集成和共享日志记录信息的解释器。

在本文中,我将分享我的个人日志记录模板,您可以轻松地将其用于具有多个模块的任何项目。

让我们开始吧!

制作一个简单的Python项目

首先让我们现在开始初始化一个简单的项目,创建一个名为“ MyAwesomeProject ”的文件夹,在其中创建一个名为的新Python文件app.py。

这将是我们应用程序的起点,我将使用这个项目来构造我正在谈论的模板的一个简单的工作示例。

继续并在VSCode(或您喜欢的任何编辑器)中打开您的项目。

现在,让我们为应用程序级别的日志记录设置创建一个新模块,我们将其称为logger。

创建应用程序级别记录器

这是模板的主要部分,我们创建一个名为logger.py的新文件。

让我们定义一个根记录器,并将其用于初始化我们的应用程序级记录器。是时候编写一些代码了!

导入一些和我们需要的应用名称:

import logging 

import sys 

APP_LOGGER_NAME = 'MyAwesomeApp' 

我们将在app.py中调用的函数:

def setup_applevel_logger(logger_name = APP_LOGGER_NAME, file_name=None):  

    logger = logging.getLogger(logger_name) 

    logger.setLevel(logging.DEBUG) 

    formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") 

    sh = logging.StreamHandler(sys.stdout) 

    sh.setFormatter(formatter) 

    logger.handlers.clear() 

    logger.addHandler(sh) 

    if file_name: 

        fh = logging.FileHandler(file_name) 

        fh.setFormatter(formatter) 

        logger.addHandler(fh) 

    return logger 

我们将使用预定义的DEBUG级别定义记录器,并使用Formatter构造记录消息。然后我们将其分配给流处理程序,以便将消息写入控制台。

接下来,我们还确保包含一个文件,我们也可以在其中另外存储所有日志消息,这是通过记录FileHandler来完成的。

最后,我们返回记录器。

此时需要另一个功能,它将确保我们的模块可以在需要时调用记录器。定义一个get_logger函数。

def get_logger(module_name):     

   return logging.getLogger(APP_LOGGER_NAME).getChild(module_name) 

另外,为了将此模块用作软件包,我们可以选择创建一个名为logger的文件夹,并将此文件放入其中。如果这样做,我们还需要在文件夹中包含___init__.py文件,然后执行

from .logger import * 

以确保我们可以从包中导入模块,现在需要完成主要设置!

(编辑:大连站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!