zoukankan      html  css  js  c++  java
  • python_loggin日志处理

    一。

    1.引入

    import logging

    日志的作用:

    1)出现问题后,排查问题使用

    2.初识

    日志的等级按照由低到高的顺序排列:

    1)debug

    2)info

    3)warning

    4)error

    5)critical

    logging.debug('这是一个调试级别的日志')
    logging.info('正常日志')
    logging.warning('这是警告级别的日志')
    logging.error('已经出错了')
    logging.critical('程序已经停止了')
    运行结果:

    语言内置的logging模块默认是root级别的,只收集warning级别以上的日志

    源码:

    3.自定义

    1)在控制台打印日志

    #1)创建日志收集器,其中getLogger(这里可以不用写名字,若不写名字日志默认为root模式)
    root_logging=logging.getLogger('class_18')
    #2)设置收集器,收集日志等级
    root_logging.setLevel('DEBUG')
    #3)设置输出处理器,在当前控制台打印日志
    stream_handler=logging.StreamHandler()
    #设置控制台日志输出等级
    stream_handler.setLevel('INFO')
    #4)把输出处理器添加到收集器上面
    root_logging.addHandler(stream_handler)
    #5)打印的日志信息
    root_logging.info('新写的info日志')
    root_logging.debug('新写的debug日志')
    root_logging.warning('新写的warning日志')
    root_logging.error('新写的error日志')
    root_logging.critical('新写的critical日志')

    运行结果:

     注意:打印的结果与收集器规定的等级与控制台允许输出的等级是包含关系

    #6)规定日志输出格式
    fmt=logging.Formatter('%(asctime)s -- wenjianming:%(filename)s -- hanghao:%(lineno)d -- %(levelname)s:%(message)s')
    stream_handler.setFormatter(fmt)
    #7)打印设定格式的日志信息
    root_logging.info('新写的info日志')
    root_logging.debug('新写的debug日志')
    root_logging.warning('新写的warning日志')
    root_logging.error('新写的error日志')
    root_logging.critical('新写的critical日志')

    运行结果:

    #2)在文件中打印日志:

    #创建日志收集器,不写名字默认为root等级
    root_logging=logging.getLogger()
    #设置日志收集器收集日志的等级
    root_logging.setLevel('INFO')

    #创建文件收集器,并传入日志路径
    file_handler=logging.FileHandler('log.txt',encoding='utf-8')
    #设置文件收集器收集日志的等级
    file_handler.setLevel('INFO')
    #把输出器添加到收集器上
    root_logging.addHandler(file_handler)
    #设置log的格式
    fmt=logging.Formatter('%(asctime)s -- wenjianming:%(filename)s -- hanghao:%(lineno)d -- %(levelname)s:%(message)s')
    #添加到文件收集器里面
    file_handler.setFormatter(fmt)
    #输入需要打印的日志
    root_logging.info('新写的info日志')
    root_logging.debug('新写的debug日志')
    root_logging.warning('新写的warning日志')
    root_logging.error('新写的error日志')
    root_logging.critical('新写的critical日志')
    运行结果:

    4.封装成类

    方法一:重写

    def get_logger(
    name=None,
    file=None,
    file_path='log.txt',
    loggerlevel='DEBUG',
    stream_level='INFO',
    file_level='INFO',
    fmt=('%(asctime)s -- wenjianming:%(filename)s -- hanghao:%(lineno)d -- %(levelname)s:%(message)s')
    ):
    #获取收集器
    logger=logging.getLogger(name)
    #设置收集器日志级别
    logger.setLevel(loggerlevel)

    #输出管理器
    stream_handler=logging.StreamHandler()
    #设置输出管理器级别
    stream_handler.setLevel(stream_level)
    #绑定输出管理器
    logger.addHandler(stream_handler)
    # 设置输出格式
    fmt = logging.Formatter(fmt)
    stream_handler.setFormatter(fmt)
    if file:
    file_handler=logging.FileHandler(file_path,encoding='utf-8')
    file_handler.setLevel(file_level)
    logger.addHandler(file_handler)
    file_handler.setFormatter(fmt)

    return logger

    方法二:超继承

    class Logger_2(logging.Logger):
    def __init__(self,
    name=None,
    file=None,
    file_path='log.txt',
    loggerlevel='DEBUG',
    stream_level='INFO',
    file_level='INFO',
    fmt=('%(asctime)s -- wenjianming:%(filename)s -- hanghao:%(lineno)d -- %(levelname)s:%(message)s')
    ):
    super().__init__(name,loggerlevel)

    # 设置收集器日志级别
    self.setLevel(loggerlevel)

    # 输出管理器
    stream_handler = logging.StreamHandler()
    # 设置输出管理器级别
    stream_handler.setLevel(stream_level)
    # 绑定输出管理器
    self.addHandler(stream_handler)
    # 设置输出格式
    fmt = logging.Formatter(fmt)
    stream_handler.setFormatter(fmt)
    if file:
    file_handler = logging.FileHandler(file_path, encoding='utf-8')
    file_handler.setLevel(file_level)
    self.addHandler(file_handler)
    file_handler.setFormatter(fmt)
    
    
  • 相关阅读:
    html控件使用
    托盤
    托盘的实现
    ws2s函数
    网络验证
    右上角X灰化
    如何模拟一个http请求并把response的内容保存下载下来,导出到excel中(结尾福利)
    排序的几种算法(一):冒泡排序
    python中的break eturnpasscontinue用法
    python中socket模块详解
  • 原文地址:https://www.cnblogs.com/newsss/p/12984754.html
Copyright © 2011-2022 走看看