应用程序Python的日志记录模板 | 区块链研究实验室

原创 链三丰 区块链研究实验室 4天前
通过定义明确,信息量大且结构方便的日志,调试和跟踪应用程序执行的理想方式。
它们是任何编程语言(不仅仅是Python)中任何大型,中型或大型项目必不可少的组成部分。
关于Python日志记录库,大部分开发人员都善于解释如何设置一个记录系统用于一个Python脚本。但是,几乎找不到如何设置Python日志记录库以在整个应用程序范围内使用,以及如何在所有项目模块中舒适地正确集成和共享日志记录信息的解释器。
在本文中,我将分享我的个人日志记录模板,您可以轻松地将其用于具有多个模块的任何项目。
让我们开始吧!

制作一个简单的Python项目

首先让我们现在开始初始化一个简单的项目,创建一个名为“ MyAwesomeProject ”的文件夹,在其中创建一个名为的新Python文件app.py。
这将是我们应用程序的起点,我将使用这个项目来构造我正在谈论的模板的一个简单的工作示例。
继续并在VSCode(或您喜欢的任何编辑器)中打开您的项目。
现在,让我们为应用程序级别的日志记录设置创建一个新模块,我们将其称为logger。

创建应用程序级别记录器

这是模板的主要部分,我们创建一个名为logger.py的新文件。
让我们定义一个根记录器,并将其用于初始化我们的应用程序级记录器。是时候编写一些代码了!
导入一些和我们需要的应用名称:
import loggingimport sysAPP_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 *
以确保我们可以从包中导入模块,现在需要完成主要设置!

设置我们的模块级日志

可以完成一个简单的模块来测试我们的记录器,以更好地了解模板。让我们将其定义为一个简单的module.py。
import loggerlog = logger.get_logger(__name__)def multiply(num1, num2): # just multiply two numbers    log.debug("Executing multiply function.")    return num1 * num2
现在,该模块可以访问记录器,并应显示带有适当模块名称的消息。
让我们现在进行测试!

运行我们的脚本并测试记录器

现在,我们构建app.py。
import loggerlog = logger.setup_applevel_logger(file_name = 'app_debug.log')import mymodulelog.debug('Calling module function.')mymodule.multiply(5, 2)log.debug('Finished.')
现在,确认您的目录包含以下文件:
项目文件夹
最后,只需通过以下命令运行脚本:
python3 app.py
您应该得到类似以下的输出:
并且您的目录结构也应该更改为包括新的日志文件,继续检查其内容!
日志文件出现!

以上我们成功的搭建了Python日志记录库。

(0)

相关推荐

  • 2020年最流行Python web开发框架(下)

    11种2020年流行的Web开发Python框架,接上文介绍的,剩下部分在本文里继续详细介绍.当然,Python框架很多很棒,学好Python是打开这个宝藏的钥匙.如果您还没学或者正在学习连潘石屹都在 ...

  • Python测试工具——nose简介

    好多天没来打卡了.博主最近一直在把碎片化知识转化为知识体系的过程中挣扎. Python语言.selenium.unittest框架.HTMLTestRunner框架都有所了解,也写了一批脚本去做项目的 ...

  • 分散式应用程序的简单解释| 区块链研究实验室

    原创 链三丰 区块链研究实验室 今天 在本文中,我们将向大家解释什么是分散式应用程序(DApp)以及它的工作原理. 什么是DApp? 分散式应用程序(DApp的缩写)在前端可视化并在对等网络上执行的智 ...

  • 如何使用Python异步编程进行API调用 | 区块链研究实验室

    原创 链三丰 区块链研究实验室 今天 收录于话题 #Python1 #区块链技术33 #区块链44 #API1 #区块链应用30 本文中,将向大家介绍如何使用Python异步编程,以便您可以更快地进行 ...

  • 区块链研究实验室 | 如何使用Python部署智能合约

    今天 在本文中,我们将使用Python部署智能合约. 我喜欢Python,它具备着开发人员出色的经验.能够写作print("hi")而又不会过于冗长System.out.print ...

  • 如何使用Truffle部署智能合约 | 区块链研究实验室

    原创 链三丰 区块链研究实验室 今天 Ťruffle是一个开发环境(提供用于编译,部署,测试和构建的命令行工具),框架(提供各种程序包以使其易于编写测试,部署代码,构建客户端等)和资产管道(发布软件包 ...

  • 创建NFT所需的知识 | 区块链研究实验室

    链三丰 区块链研究实验室 今天 与DeFi代币和初始代币发行(ICO)一样,不可替代的代币或NFT是新的加密热潮.尽管短期内大肆宣传,但一些艺术家和评论家认为NFT确实具有长期可行性. 实际上,NFT ...

  • 如何在区块链上部署链码 | 区块链研究实验室

    原创 链三丰 区块链研究实验室 今天 介绍 在本文中,我们将部署JAVA,GO,JAVASCRIPT的链代码以运行Hyperledger Fabric区块链网络. 网络设置 具有一个应用程序通道的Hy ...

  • 区块链技术的开发简介 | 区块链研究实验室

    今天 概述 本文将向大家提供有关区块链技术开发入门时应该了解的一切的简要概述,在这里给大家展示的是学习区块链应用程序开发的基础知识,由区块链提供支持的去中心化应用程序(Dapps). 有许多不同的区块 ...

  • 如何在TRON区块链上查询交易 | 区块链研究实验室

    原创 链三丰 区块链研究实验室 今天 乙锁链交易是两个或多个地址之间交互的记录. 在TRON区块链上,通常有两个交互地址,并且它们之间的交互可以采用许多不同的形式(例如,创建新帐户或资产,触发智能合约 ...

  • 如何构建区块链REST服务器 | 区块链研究实验室

    原创 链三丰 区块链研究实验室 昨天 当前,区块链正在风靡一时,区块链真正的魔力是通过区块链应用于不同行业和领域而实现的众多可能性. Hyperledger Foundation一直在创建一个属于自己 ...