zoukankan      html  css  js  c++  java
  • 日志模块nb_log

    环境安装

    使用pip即可安装使用
    pip install nb_log

    1.功能介绍

    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 error等方法。
     

    2)日志记录到多个地方

    内置了一键入参,每个参数是独立开关,可以把日志同时记录到8个常用的地方的任意几种组合,包括控制台文件 钉钉  邮件 mongo kafka es等等。
     

    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_elastic_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)对内置logging包打了猴子补丁,使日志永远不会 使用同种handler重复记录

    例如,原生的
    from logging import getLogger,StreamHandler
    logger = getLogger('hi')
    getLogger('hi').addHandler(StreamHandler())
    getLogger('hi').addHandler(StreamHandler())
    getLogger('hi').addHandler(StreamHandler())
    logger.warning('啦啦啦')
    明明只warning了一次,但实际会造成 啦啦啦在控制台打印3次。
    使用nb_log,对同一命名空间的日志,可以无惧反复添加同类型handler,不会重复记录。
    5)支持日志自定义,运行此包后,会自动在你的python项目根目录中生成nb_log_config.py文件,按说明修改。

    2.最简单的使用方式,这只是演示控制台日志

    2.0)自动拦截改变项目中所有地方的print效果。(支持配置文件自定义关闭转化print)
    2.1)控制台日志变成可点击,精确跳转。(支持配置文件自定义修改或增加模板,内置了7种模板,部分模板生成的日志可以在pycharm控制台点击跳转)
    2.2)控制台日志根据日志级别自动变色。(支持配置文件关闭彩色或者关闭背景色块)
    from nb_log import LogManager
     
    logger = LogManager('啦啦啦').get_logger_and_add_handlers()
     
    logger.debug('绿色')
    logger.info('蓝色')
    logger.warning('黄色')
    logger.error('紫红色')
    logger.critical('血红色')
    print('print样式被自动发生变化')

    3.文件日志

    3.1)这个文件日志的自定义filehandler是python史上性能最强大的支持多进程下日志文件按大小自动切割。
  • 相关阅读:
    ext2 / ext3 结构分析
    怎么解决TortoiseSVN文件夹图标不显示?
    CVS Update后,p u 各代表什么意思? 颜色代表什么意思?
    Oracle Purge和drop的区别
    oracle怎样删除回收站里面的表
    oracle 查询所有表 和视图表
    PLSQL 数据中去掉 字段有空格 回车 换行
    plsql update 字段值 前面增加 字符
    function 通过商品编号 获取商品名称
    远程连接后 Xshell 怎么显示桌面 命令
  • 原文地址:https://www.cnblogs.com/HandsUp/p/13612660.html
Copyright © 2011-2022 走看看