005python中日志模块logging的使用

005python中日志模块logging的使用

1.logging基本语法

import logging
"""主要用于日志信息的处理,打印输出保存细节"""
# jupyter nbconvert --to markdown 1.ipynb #转化为md

def log_base():
    """
    基本用法
    :return: None
    """
    print('this is logging')
    # 默认级别warning,输出以上的日志,指定输出级别,并发多线程,输出位置不定,保存到文件就不再打印了,默认追加模式
    logging.basicConfig(
        # filename='demo.log',
        # filemode='w',
        level=logging.DEBUG,
        # 格式化输出日志
        format='%(asctime)s | %(levelname)s | %(filename)s : %(lineno)s | %(message)s',
        datefmt='%Y-%m-%d %H:%M:%S',  # 格式化时间输出
    )


def log_level():
    """
    日志级别
    :return: None
    """
    logging.debug('this is dubug')
    logging.info('this is info')
    logging.warning('this is warning')
    logging.error('this is error')
    logging.critical('this is critical')


def log_print():
    """
    日志打印,几种不同的打印方式
    :return: None
    """
    name = 'alice'
    age = 18
    logging.debug('姓名 %s,年龄 %d', 'jack', 20)
    logging.debug('姓名 %s,年龄 %d', name, age)
    logging.debug('姓名 %s,年龄 %d' % (name, age))
    logging.debug('姓名 {},年龄 {}'.format('jack', 20))
    logging.debug(f'姓名 {name},年龄 {age}')


def log_senior():
    """
    高级用法,记录器(笔),处理器(显示位置屏幕),过滤器(显示特定信息)
    :return: None
    """
    # 创建记录器,默认root
    logger = logging.getLogger('cn.ccb.pen')
    # logger.setLevel('DEBUG')
    logger.setLevel(logging.DEBUG)  # 指定记录器日志级别,最高优先级过滤,最后输出级别,写最小的较好
    print(logger, type(logger))

    # 处理器
    sh = logging.StreamHandler()  # 一种类型的处理器,显示器,分发器
    sh.setLevel(logging.INFO)  # 指定级别

    fh = logging.FileHandler(  # 处理器之一,输出文件处理器,不指定级别默认记录器级别
        filename='../demo.log'
    )

    # 格式化,对其
    formatter = logging.Formatter(
        '%(asctime)s | %(levelname)8s | %(filename)s : %(lineno)s | %(message)s')

    # 给处理器设置格式
    sh.setFormatter(formatter)
    fh.setFormatter(formatter)

    # 记录器要设置处理器
    logger.addHandler(sh)
    logger.addHandler(fh)

    # 定义过滤器,位置一定要在日志之上,要不不管用
    flt = logging.Filter('cn.ccb')
    # 记录器关联过滤器
    # logger.addFilter(flt)
    # 处理器层过滤
    # sh.addFilter(flt)
    # fh.addFilter(flt)

    # 打印日志
    logger.debug('this is dubug')
    logger.info('this is info')
    logger.warning('this is warning')
    logger.error('this is error')
    logger.critical('this is critical')


if __name__ == '__main__':
    log_senior()
    pass
  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值