zoukankan      html  css  js  c++  java
  • 042 日志

    • logging 模块提供模块级别的函数记录日志
    • 包括四大组件

    概念

    级别

    1. DEBUG
    2. INFO
    3. NOTICE
    4. WARNING
    5. ERROR
    6. CRITICAL
    7. ALERT
    8. EMERGENCY
    • 用户可以关注自己所需的程序信息

    作用

    • 调试
    • 了解软件的运行情况
    • 分析定位问题

    信息

    • time
    • level
    • 地点
    • 内容

    成熟的第三方日志

    • logging
    • log4j
    • log4php

    注意事项

    • 不要频繁地进行 IO 操作

    logging 模块

    级别

    • DEBUG
    • INFO
    • WARNING
    • ERROR
    • CRITICAL

    使用方法

    1. 直接使用 logging,因为 logging 封装了其他组件
    2. loging 四大组件直接定制

    注意事项

    • 初始化或写日志实例需要指定级别
    • 级别可自定义
    • 只有当级别等于或高于指定级别才被记录

    模块级别的日志

    几个函数

    函数 释义
    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(level, *args, **kwargs) 创建一条严重级别为 level 的日志记录
    logging.basicConfig(**kwargs) root logger 进行一次性配置
    • logging.basicConfig(**kwargs)
      • 只在第一次调用的时候起作用
      • 不配置 logger 则使用默认值
        • 输出:sys.stderr
        • 级别:WARNING
        • 格式:level:log_name:content

    format 参数

    参数 用法 释义
    asctime %(asctime)s 日志事件发生的时间——人类可读时间
    如:2019-12-24 17:00:12,765
    created %(created)f 日志事件发生的时间——时间戳
    relativeCreated %(relativeCreated)d 日志事件发生的时间相对于 logging 模块加载时间的毫秒数
    msecs %(msecs)d 日志事件发生事件的毫秒部分
    levelname %(levelname)s 该日志记录的文字形式的日志级别
    DEBUG, INFO, WARNING, ERROR, CRITICAL
    levelno %(levelno)s 该日志记录的数字形式的日志级别 (10, 20, 30, 40, 50)
    name %(name)s 所使用的日志器名称,默认是 root
    因为默认使用的是 rootLogger
    message %(message)s 日志记录的文本内容,通过 msg % args 计算得到的
    pathname %(pathname)s 调用日志记录函数的源码文件的全路径
    filename %(filename)s pathname 的文件名部分,包含文件后缀
    module %(module)s filename 的名称部分,不包含后缀
    lineno %(lineno)d 调用日志记录函数的源代码所在的行号
    funcName %(funcName)s 调用日志记录函数的函数名
    process %(process)d 进程 ID
    processName %(processName)s 进程名称,Python3.1 新增
    thread %(thread)d 线程 ID
    threadName %(thread)s 线程名称

    处理流程

    四大组件 作用
    日志器 Logger 产生日志的一个接口
    处理器 Handler 把产生的日志发送到相应的目的地
    过滤器 Filter 更精细的控制那些日志输出
    格式器 Formatter 对输出信息进行格式化

    Logger

    • 产生一个日志
    函数 释义
    Logger.setLevel() 设置日志器将会处理的日志消息的最低严重级别
    Logger.addHandler(), Logger.removeHandler() 为该 logger 对象添加 和 移除一个 handler 对象
    Logger.addFilter(), Logger.removeFilter() 为该 logger 对象添加 和 移除一个 filter 对象
    Logger.debug 产生一条 debug 级别的日志
    info, error 等同理
    Logger.exception() 创建类似于 Logger.error 的日志消息
    Logger.log() 获取一个明确的日志 level 参数类创建一个日志记录
    • 如何得到一个 logger 对象
      1. 实例化
      2. logging.getLogger()

    Handler

    • log 发送到制定位置
    • 方法
      • setLevel
      • setFormat
      • addFilter, removeFilter
    • 不需要直接使用,Handler 是基类
    方法 释义
    logging.StreamHandler 将日志消息发送到输出到 Stream
    std.out, std.err 或任何 file-like 对象
    logging.FileHandler 将日志消息发送到磁盘文件
    默认情况下文件大小会无限增长
    logging.handlers.RotatingFileHandler 将日志消息发送到磁盘文件,并支持日志文件按大小切割
    logging.hanlders.TimedRotatingFileHandler 将日志消息发送到磁盘文件,并支持日志文件按时间切割
    logging.handlers.HTTPHandler 将日志消息以 GET 或 POST 的方式发送给一个 HTTP 服务器
    logging.handlers.SMTPHandler 将日志消息发送给一个指定的 email 地址
    logging.NullHandler 该 Handler 实例会忽略 error messages
    通常被想使用 logginglibrary 开发者使用来避免
    No handlers could be found for logger XXX 信息的出现

    Filter

    • 可以被 Handler 和 Logger 使用
    • 控制传递过来的信息的具体内容

    Format

    • 直接实例化
    • 可以继承 Format 添加特殊内容
    三个参数 释义
    fmt 指定消息格式化字符串,如果不指定该参数则默认使用 message 的原始值
    datefmt 指定日期格式字符串,如果不指定该参数则默认使用 %Y-%m-%d %H:%M:%S
    style Python3.2 时新增的参数,可取值为 %, {$,如果不指定该参数则默认使用 %
  • 相关阅读:
    CodeForces 156B Suspects(枚举)
    CodeForces 156A Message(暴力)
    CodeForces 157B Trace
    CodeForces 157A Game Outcome
    HDU 3578 Greedy Tino(双塔DP)
    POJ 2609 Ferry Loading(双塔DP)
    Java 第十一届 蓝桥杯 省模拟赛 19000互质的个数
    Java 第十一届 蓝桥杯 省模拟赛 19000互质的个数
    Java 第十一届 蓝桥杯 省模拟赛 19000互质的个数
    Java 第十一届 蓝桥杯 省模拟赛十六进制转换成十进制
  • 原文地址:https://www.cnblogs.com/yorkyu/p/12093785.html
Copyright © 2011-2022 走看看