美文网首页
日志logging模块介绍

日志logging模块介绍

作者: D_w | 来源:发表于2021-12-01 10:38 被阅读0次

    日志的等级

    • debug 最详细的日志信息,典型应用场景是问题诊断
    • info 信息详细程度仅次于debug,通常只记录关键节点信息,用于确认一切都是按照预期般工作
    • warning 当某些不期望的事情发生是记录的信息(如磁盘可用空间较低)此时应用程序还是正常运行的
    • error 由于一个更严重的问题导致某些功能不能正常运行时记录的信息
    • critical 当发生验证错误,导致应用程序不能继续运行时记录的信息

    logging模块的使用

    1. 使用logging提供的模块级别的函数
    logging.debug(msg,*args,kwargs)      # 创建一条严重级别为debug的日志记录
    logging.info(msg,*args,kwargs)     # 创建一条严重级别为info的日志记录
    logging.warning(msg,*args,kwargs)     # 创建一条严重级别为warning的日志记录
    logging.error(msg,*args,kwargs)        # 创建一条严重级别为error的日志记录
    logging.critical(msg,*args,kwargs)      # 创建一条严重级别为critical的日志记录
    logging.log(msg,*args,kwargs)        # 创建一条严重级别为log的日志记录
    logging.basicConfig(**kwargs)         # 对root logger进行一次性配置
    

    logging日志格式输出

    logging.basicConfig()函数说明


    image.png

    logging模块的格式字符串


    image.png
    举个例子
    import logging
    
    my_format = '%(asctime)s-%(filename)s-%(module)s-%(lineno)d'
    
    logging.basicConfig(
        filename='my.log',
        level=logging.INFO,   # 这里设置的等级后,后续logger的输出只会输出严重级别大于等于这个级别的日志,如这里设置INFO,后续的debug级别日志就不输出
        format=my_format     # format接收字符串,内容参考logging\__init__.py中class formatter中的说明
    )
    
    logging.info(msg='info')     # 创建一条严重级别为info的日志记录
    logging.debug(msg='debug')      # 创建一条严重级别为debug的日志记录
    logging.warning(msg='warning')     # 创建一条严重级别为warning的日志记录
    logging.error(msg='error')        # 创建一条严重级别为error的日志记录
    logging.critical(msg='critical')      # 创建一条严重级别为critical的日志记录
    ------------my.log中的内容--------------------
    2021-11-30 17:46:35,316-test.py-test-11
    2021-11-30 17:46:35,316-test.py-test-13
    2021-11-30 17:46:35,316-test.py-test-14
    2021-11-30 17:46:35,316-test.py-test-15
    
    1. 使用logging日志系统的四大组件
    • loggers提供应用程序代码直接使用的接口


      logger类方法
    • handlers用于将日志记录发送到指定的目的位置


      Handler相关类
      Handler相关子类
    • filters提供更细粒度的日志过滤功能,用于决定哪些日志记录将会被输出(其他的日志记录将会被忽略)
    • formatters用于控制日志信息的最终输出格式
      举个例子
    import logging
    import logging.handlers
    import datetime
    
    logger = logging.getLogger('mylogger')
    logger.setLevel(logging.DEBUG)
    
    rf_handler = logging.handlers.TimedRotatingFileHandler('all.log', when='midnight', interval=1, backupCount=7, atTime=datetime.time(0, 0, 0, 0))
    rf_handler.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(message)s"))
    
    f_handler = logging.FileHandler('error.log')
    f_handler.setLevel(logging.ERROR)
    f_handler.setFormatter(logging.Formatter("%(asctime)s - %(levelname)s - %(filename)s[:%(lineno)d] - %(message)s"))
    
    logger.addHandler(rf_handler)
    logger.addHandler(f_handler)
    
    logger.debug('debug message')
    logger.info('info message')
    logger.warning('warning message')
    logger.error('error message')
    logger.critical('critical message')
    -----------------all.log----------------
    2021-11-30 18:11:34,262 - DEBUG - debug message
    2021-11-30 18:11:34,262 - INFO - info message
    2021-11-30 18:11:34,262 - WARNING - warning message
    2021-11-30 18:11:34,262 - ERROR - error message
    2021-11-30 18:11:34,263 - CRITICAL - critical message
    --------------error.log----------------
    2021-11-30 18:11:34,262 - ERROR - test_four_module.py[:21] - error message
    2021-11-30 18:11:34,263 - CRITICAL - test_four_module.py[:22] - critical message
    

    相关文章

      网友评论

          本文标题:日志logging模块介绍

          本文链接:https://www.haomeiwen.com/subject/tqvdxrtx.html