0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Python 自制简单实用的日志装饰器

科技绿洲 来源:Python实用宝典 作者:Python实用宝典 2023-10-31 15:05 次阅读

在写代码的时候,往往会漏掉日志这个关键因素,导致功能在使用的时候出错却无法溯源。

其实,只需要写一个非常简单的日志装饰器,我们就能大大提升排查问题的效率。

1.简陋版装饰器

写一个装饰器非常简单,因为本质上装饰器就是一个返回函数的“高阶”函数而已:

1) 函数作为参数传递进装饰器。
2) 装饰器内定义一个函数,处理作为参数传递进来的函数。
3) 返回这个装饰器内定义的函数

图片

用一下试试看:

图片

效果如下:

图片

虽然这样可以实现我们所需要的功能,但其实有很大的优化空间。

2.普通版装饰器

第一版代码中有一个显而易见的问题,装饰器内定义的处理函数不支持kwargs,而在装饰器中支持kwargs仅仅是举手之劳而已。

第二个问题是,生成时间戳的时候采用字符串截取的形式,这种形式过于粗暴。其实可以使用strftime做字符串转换。

修改如下:

图片

似乎优化得差不多了,不过依然存在改进空间。

3.优化版装饰器

在前两版代码中,我们使用print进行日志输出,其实这种处理日志的方式并不标准。

使用logging模块控制日志输出是一个更好地选择。

为了使用logging模块记录日志,我们需要先配置好logging相关的选项。

1) 首先,生成一个日志记录器,并配置日志等级:

图片

2) 配置日志格式、增加handler控制输出流:

图片

此处可以设置handler所需要处理的日志等级,没有设置则默认使用logger自身的Level,即DEBUG等级。

3) 最后,将此handler加入到日志记录器内:

图片

logging 完整配置如下:

图片

使用的时候非常简单,就是把print换成logger.debug即可:

图片

效果如下:

图片

这样,一个比较完善的日志装饰器就完成了。

附常用的日志等级配置:

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    4304

    浏览量

    62429
  • 日志
    +关注

    关注

    0

    文章

    138

    浏览量

    10632
  • python
    +关注

    关注

    56

    文章

    4782

    浏览量

    84452
收藏 人收藏

    评论

    相关推荐

    理解Python装饰及其工作原理

    Python 是一种对新手很友好的语言。但是,它也有很多较难掌握的高级功能,比如装饰(decorator)。很多初学者一直不理解装饰及其
    发表于 10-08 11:39 2199次阅读

    Python日志logging模块简单介绍

    Python日志logging模块的使用-数据库脚本优化003
    发表于 03-05 13:46

    分享python 7个好用的装饰

    、deco.concurrent安装:pip install deco使用 DECO 就像在 Python 程序中查找或创建两个函数一样简单。我们可以用 @concurrent 装饰需要并行运行的函数
    发表于 06-15 16:54

    自制简单的星星花环

    描述简单的星星花环今年我决定用自制的花环装饰我的圣诞树。为此,您需要取几颗这样的星星并通过电线将它们相互连接,这将传输 5 V 电源。每颗星上安装了 5 个 LED 和 5 个额定值为 120 欧姆的限流电阻。PCB
    发表于 07-28 07:58

    一文读懂Python装饰

    装饰前,还要先要明白一件事,Python 中的函数和 Java、C++不太一样,Python 中的函数可以像普通变量一样当做参数传递给另外一个函数。
    发表于 04-28 10:48 3417次阅读
    一文读懂<b class='flag-5'>Python</b><b class='flag-5'>装饰</b><b class='flag-5'>器</b>

    让你学写Python装饰的五大理由

    你必须学写Python装饰的五个理由
    的头像 发表于 03-02 10:06 1891次阅读

    Python的函数装饰器使用方法

    Python中的装饰是一种可以装饰其它对象的工具,简单地说,他们是修改其他函数的功能的函数。该工具本质上是一个可调用的对象(callabl
    的头像 发表于 01-21 11:36 1563次阅读
    <b class='flag-5'>Python</b>的函数<b class='flag-5'>装饰</b>器使用方法

    Python装饰的原理和案例

    Python中的装饰器用于扩展可调用对象的功能,而无需修改其结构。基本上,装饰函数包装另一个函数以增强或修改其行为。我们可以通过一个具体的例子了解基础知识!让我们编写一个包含
    的头像 发表于 07-01 11:35 2205次阅读

    Python更优雅的日志记录解决方案Loguru

      Loguru: 更优雅的日志记录解决方案! loguru  是一个  Python  简易且强大的第三方日志记录库,该库旨在通过添加一系列有用的功能来解决标准记录的注意事项,从而
    的头像 发表于 11-18 11:24 2950次阅读

    自制PCB花环装饰圣诞树

    电子发烧友网站提供《自制PCB花环装饰圣诞树.zip》资料免费下载
    发表于 07-18 09:42 2次下载
    <b class='flag-5'>自制</b>PCB花环<b class='flag-5'>装饰</b>圣诞树

    Python装饰的使用

    定义 首先我们先来了解下装饰的定义。顾名思义,在Python中,装饰本质上就是一个函数,它可以接收一个函数作为参数,然后返回一个新的函数
    的头像 发表于 06-21 16:54 723次阅读

    Python自制简单实用的日志装饰

    在写代码的时候,往往会漏掉日志这个关键因素,导致功能在使用的时候出错却无法溯源。 其实,只需要写一个非常简单日志装饰,我们就能大大提升排
    的头像 发表于 10-21 14:39 691次阅读
    <b class='flag-5'>Python</b><b class='flag-5'>自制</b><b class='flag-5'>简单</b>实用的<b class='flag-5'>日志</b><b class='flag-5'>装饰</b><b class='flag-5'>器</b>

    如何通过阿里云日志服务搭建一套通过Python上传日志的监控服务

    时间,因此如果能使用市面上现成的系统会很方便。 本文将教你如何通过阿里云日志服务搭建一套通过Python上传日志、配置日志告警的监控服务。 1.准备 开始之前,你要确保
    的头像 发表于 10-21 14:43 898次阅读
    如何通过阿里云<b class='flag-5'>日志</b>服务搭建一套通过<b class='flag-5'>Python</b>上传<b class='flag-5'>日志</b>的监控服务

    如何写一个简单装饰

    今天介绍的是一个已经存在十三年,但是依旧不红的库 decorator,好像很少有人知道他的存在一样。 这个库可以帮你做什么呢 ? 其实很简单,就是可以帮你更方便地写python装饰
    的头像 发表于 11-01 09:54 471次阅读
    如何写一个<b class='flag-5'>简单</b>的<b class='flag-5'>装饰</b><b class='flag-5'>器</b>

    【每天学点AI】一个例子带你了解Python装饰到底在干嘛!

    今天我们来聊聊一种能给你的代码变得“加料”的神器——Python装饰。就像一杯咖啡,原本它是苦的,为了让它符合我的口味,我给它添加了糖,添加之后就完美的符合了我的口味。那么,装饰
    的头像 发表于 09-20 16:54 524次阅读
    【每天学点AI】一个例子带你了解<b class='flag-5'>Python</b><b class='flag-5'>装饰</b><b class='flag-5'>器</b>到底在干嘛!