zoukankan      html  css  js  c++  java
  • logging日志管理

    日志:记录系统运行时的信息的(调试信息和异常信息)

    基本用法:

    import logging
    logging.debug("这是一条调试信息")
    logging.info("这是一条普通信息")
    logging.warning("这是一条警告信息")
    logging.error("这是一条错误信息")
    logging.critical("这是一条严重错误信息")
    View Code

    4钟级别:DEBUG,INFO,WARNING,ERROR,CRITICAL

    设置日志级别:

    logging.basicConfig(level=logging.INFO)

    设置日志格式:

    logging.basicConfig(format="xxxxxxx")

    format参数中可能用到的格式化信息:

    占位符   描述

    %(name)s Logger的名字

    %(levelno)s 数字形式的日志级别

    %(levelname)s 文本形式的日志级别

    %(pathname)s 调用日志输出函数的模块的完整路径名,可能没有

    %(filename)s 调用日志输出函数的模块的文件名

    %(module)s 调用日志输出函数的模块名

    %(funcName)s 调用日志输出函数的函数名

    %(lineno)d 调用日志输出函数的语句所在的代码行

    %(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示

    %(relativeCreated)d 输出日志信息时的,自Logger创建以来的毫秒数

    %(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”

    %(thread)d 线程ID。可能没有 %(threadName)s 线程名。可能没有

    %(process)d 进程ID。可能没有 %(message)s 用户输出的消息 示例代码:

    import logging
    fmt = '%(asctime)s %(levelname)s [%(name)s] [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s'
    logging.basicConfig(level=logging.INFO, format=fmt)
    logging.debug("调试")
    logging.info("信息")
    logging.warning("警告")
    logging.error("错误")

    将日志信息输出到文件中:

    import logging
    fmt = '%(asctime)s %(levelname)s [%(name)s] [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s' logging.basicConfig(filename="a.log", level=logging.INFO, format=fmt) logging.debug("调试") logging.info("信息") logging.warning("警告") logging.error("错误")

    日志的高级用法

     logging日志模块四大组件

    组件之间的关系

    日志器(logger)需要通过处理器(handler)将日志信息输出到目标位置,如:文件、sys.stdout、网络等;

    不同的处理器(handler)可以将日志输出到不同的位置;

    日志器(logger)可以设置多个处理器(handler)将同一条日志记录输出到不同的位置;

    每个处理器(handler)都可以设置自己的格式器(formatter)实现同一条日志以不同的格式输出到不同的地 方。

    每个处理器(handler)都可以设置自己的过滤器(filter)实现日志过滤,从而只保留感兴趣的日志;

    简单点说就是:日志器(logger)是入口,真正干活儿的是处理器(handler),处理器(handler)还可以通过过 滤器(filter)和格式器(formatter)对要输出的日志内容做过滤和格式化等处理操作。

    将日志信息同时输出到控制台和文件中

    # 导包
    # 创建日志处理器
    # 创建控制台处理器 文件处理器
    # 创建格式化器
    # 把格式化器添加到处理器中
    # 把处理器添加到日志器中
    # 打印不同级别的日志
    # 将日志信息同时输出到控制台和文件中
    # 导包
    import logging
    
    # 创建日志器对象
    logger = logging.getLogger()
    logger.setLevel(logging.DEBUG)
    
    # 创建控制台处理器
    sh = logging.StreamHandler()
    sh.setLevel(logging.INFO)
    
    # 创建文件处理器
    fh = logging.FileHandler("b.log", encoding="UTF-8")
    fh.setLevel(logging.ERROR)
    
    # 创建格式化器
    fmt = '%(asctime)s %(levelname)s [%(name)s] [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s'
    formatter = logging.Formatter(fmt=fmt)
    
    # 把格式化器添加到处理器中
    sh.setFormatter(formatter)
    fh.setFormatter(formatter)
    
    # 把处理器添加到日志器
    logger.addHandler(sh)
    logger.addHandler(fh)
    
    # 打印不同级别的日志
    logger.info("info")
    logging.warning("warn")
    logger.error("error")
    View Code

    fh = logging.handlers.TimedRotatingFileHandler(filename, when='h', interval=1, backupCount=0)

    将日志信息记录到文件中,以特定的时间间隔切换日志文件。

    filename: 日志文件名

    when: 时间单位,可选参数

      S - Seconds

      M - Minutes

      H - Hours

      D - Days

      midnight - roll over at midnight W

      {0-6} - roll over on a certain day;

      0 - Monday

    interval: 时间间隔

    backupCount: 日志文件备份数量。

    如果backupCount大于0,那么当生成新的日志文件时, 将只保留backupCount个文件,删除最老的文件。

  • 相关阅读:
    六种常见排序算法的自我研究(冒泡排序,选择排序,快速排序,归并排序,插入排序,堆排序)
    设计模式学习总结(二)工厂模式
    SQL Server Reporting Service(SSRS) 第七篇 常见错误汇总
    SQL Server Reporting Service(SSRS) 第六篇 SSRS 部署总结
    设计模式学习总结(一)简单工厂模式
    设计模式学习总结(三)抽象工厂模式
    设计模式学习总结(四)单例模式
    SQL Server覆盖索引--有无包含列对数据库查询性能的影响分析
    Dev Express Report 学习总结(八)Dev Express Reports 常见问题总结
    docker命令笔记
  • 原文地址:https://www.cnblogs.com/snailon/p/11105801.html
Copyright © 2011-2022 走看看