首页 > 其他 > 详细

封装nb_log类,应用在项目上使用更方便

时间:2020-08-27 22:28:55      阅读:174      评论:0      收藏:0      [点我收藏+]

 

环境安装

使用pip即可安装使用

pip install nb_log

功能介绍

0)自动转换print效果,再也不怕有人在项目中随意print,导致很难找到是从哪里冒出来的print。
只要import nb_log,项目所有地方的print自动现型并在控制台可点击几精确跳转到print的地方。

1)兼容性
使用的是python的内置logging封装的,返回的logger对象的类型是py官方内置日志的Logger类型,兼容性强,
保证了第三方各种handlers扩展数量多和方便,和一键切换现有项目的日志。

比如logru和logbook这种三方库,完全重新写的日志,
它里面主要被用户使用的logger变量类型不是python内置Logger类型,
造成logger说拥有的属性和方法有的不存在或者不一致,这样的日志和python内置的经典日志兼容性差,
只能兼容(一键替换logger类型)一些简单的debug info warning errror等方法,。

2) 日志记录到多个地方
内置了一键入参,每个参数是独立开关,可以把日志同时记录到8个常用的地方的任意几种组合,
包括 控制台 文件 钉钉 邮件 mongo kafka es 等等 。在第8章介绍实现这种效果的观察者模式。

3) 日志命名空间独立,采用了多实例logger,按日志命名空间区分。
命名空间独立意味着每个logger单独的日志界别过滤,单独的控制要记录到哪些地方。

logger_aa = LogManager(aa).get_logger_and_add_handlers(10,log_filename=aa.log)
logger_bb = LogManager(bb).get_logger_and_add_handlers(30,is_add_stream_handler=False,ding_talk_token=your_dingding_token)
logger_cc = LogManager(cc).get_logger_and_add_handlers(10,log_filename=cc.log)

那么logger_aa.debug(‘哈哈哈‘)
将会同时记录到控制台和文件aa.log中,只要debug及debug以上级别都会记录。

logger_bb.warning(‘嘿嘿嘿‘)
将只会发送到钉钉群消息,并且logger_bb的info debug级别日志不会被记录,
非常方便测试调试然后稳定了调高界别到生产。

 

logger_cc的日志会写在cc.log中,和logger_aa的日志是不同的文件。

4) 对内置looging包打了猴子补丁,使日志永远不会使用同种handler重复记录

使用nb_log,对同一命名空间的日志,可以无惧反复添加同类型handler,不会重复记录。

5)支持日志自定义,运行此包后,会自动在你的python项目根目录中生成nb_log_config.py文件,按说明修改。

 

基本使用

1、pycham中调整设置控制台日志打印出的颜色

技术分享图片

 

 2、设置完成后去掉console弹出的颜色设置

技术分享图片

 

 3、自动显示print且可跳转

在nb_log_config.py (第一次执行打印日志会在当前项目的根目录下自动生成)中进行设置如下:

技术分享图片

 

设置完成后自动跳转:

 

 技术分享图片

 

 

4、实际操作中使用:

技术分享图片

 

 

 

二次封装:

实际暂时用不到那么多功能,也不需要多实例logger,所以取里面的一次,进行了封装,就不用在Py文件的里面每次都实例下

log地址原日志文件是写死的,允许被修改,默认日志存放路径,可以在源码里查看到。

一下封装,可以再优化:

1、logger名称可以作为参数传进来

2、log_path和log_filename可以放在配置文件里读取过来,放在nb_log_config.py里也是可以

以下封装只是个人觉得做自动化测试使用比较方便

还有很多别的功能可以查看get_logger_and_add_handlers方法,或者nb_log的init文件说明

 1 from nb_log import LogManager
 2 
 3 class NbLog:
 4 
 5     def __init__(self):
 6         self.logger=LogManager(simple).get_logger_and_add_handlers(log_path="log存放地址",log_filename="日志名称")
 7 
 8     def error(self,msg):
 9         return self.logger.error(msg)
10     def debug(self,msg):
11         return self.logger.debug(msg)
12     def info(self,msg):
13         return self.logger.info(msg)
14     def warning(self,msg):
15         return self.logger.warning(msg)
16     def exception(self,msg,exc_info=True):
17         return self.logger.exception(msg,exc_info)
18 
19 if __name__ == __main__:
20     dolog =NbLog()
21     dolog.debug("这个是debug日志")
22     dolog.error("这个是error日志")

 

引用:https://www.cnblogs.com/123anqier-blog/p/13406702.html

封装nb_log类,应用在项目上使用更方便

原文:https://www.cnblogs.com/yywy/p/13572119.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!