• Python日志模块


    logging 模块

    日志模块可以保存程序运行中需要记录的信息,特别是关键位置。及时打印日志利于理解程序运行状态。

    Why use logging?

    • 替代print()打印信息
    • 利于程序管理与跟踪

    那些位置需要记录日志

    • 对外部系统与模块的依赖调用前后都记下日志
    • 程序中重要的状态信息的变化应该记录下来,方便查问题时还原现场,推断程序运行过程
    • 重要方法级或模块级。记录它的输入与输出,方便定位
    • 任何业务异常都应该记下来
    • else可能吞掉你的请求,或是赋予难以理解的最终结果

    logging模块基本功能

    • logging 模块的调用
    • 保存log日志
    • 调整输入日志等级
    • 修改日志消息格式

    logging 模块的五个等级

    • DEBUG:调试信息,通常在诊断问题的时候用得着;
    • INFO:普通信息,确认程序安装预期运行;
    • WARNING:警告信息,表示发生了意想不到的事情,或者指示接下来可能会出现一些问题,但是程序还是继续运行;
    • ERROR:错误信息,程序运行中出现了一些问题,一些功能没有执行;
    • CRITICAL:危险信息,一个严重的错误,导致程序无法继续运行。

    logging模块自定义记录格式

    logging.basicConfig(level=logging.DEBUG, filename=filename, filemode="w", format=fmt)

    参数说明:

    • level 设置消息显示或者打印级别,默认级别为 warning
    • filename 设置记录日志的文件名字
    • filemode 设置日志追加还是从新记录的方式,默认是再次运行,新日志追加原日志之后
    • format 设置日志显示格式

    %(asctime)s:日志创建时的普通时间;
    %(created)f:日志创建时的时间(由time.time()返回);
    %(filename)s:文件名;
    %(funcName)s:调用日志记录的函数;
    %(levelname)s:日志消息的文本级别;
    %(levelno)s:日志消息的数字级别;
    %(lineno)d:调用日志消息的行号;
    %(msecs)d:创建时间的毫秒部分;
    %(message)s:日志消息;
    %(name)s:日志器的名称;
    %(pathname)s:记录日志的源文件的路径名;
    %(process)d:进程ID;
    %(processName)s:进程名;
    %(thread)d:线程ID;
    %(threadName)s:线程名;
    %(relativeCreated)d:创建日志记录的时间(以毫秒为单位)

    案例框架

    import logging
    
    # 记录日志的文件名字
    filename = "{}.log".format("myNotes") 
    
    # 记录日志的格式
    fmt = "%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s"
    
    # 控制日志框架
    logging.basicConfig(level=logging.DEBUG, filename=filename, filemode="w", format=fmt)
    
    # 需要在代码中记录信息位置插入下列代码
    logging.info("info")
    logging.debug("debug")
    logging.warning("warning")
    logging.error("error")
    logging.critical("critical")
    logging.error("出现了错误")
    logging.info("打印信息")
    logging.warning("警告信息")
    

    总结

    • 知识点模块化
    • 知识点粒度化
    • 每天一点点,终成汪洋大海
  • 相关阅读:
    AVL树插入操作InsertAVL的实现
    epoll中EPOLLSHOT的使用
    LeetCode79:单词搜索,以及在传参时使用引用传递的重要性
    Muduo中MutexLock类中嵌套UnassignGuard类的作用
    LeetCode84:柱状图中最大的矩形
    计算图的关节点
    迪杰斯特拉算法与佛洛依德算法
    二叉树的后序遍历,先序,中序
    最近一段的学习计划
    串:KMP算法
  • 原文地址:https://www.cnblogs.com/brightyuxl/p/11251336.html
Copyright © 2020-2023  润新知