traceback | 记录详细日志

如下

exc_info=True 等同于 traceback

 

import logging
import sys


# 配置日志系统
def setup_logger():
    # 创建logger对象
    logger = logging.getLogger(__name__)
    logger.setLevel(logging.DEBUG)  # 设置最低日志级别

    # 创建控制台处理器
    console_handler = logging.StreamHandler(sys.stdout)
    console_handler.setLevel(logging.DEBUG)

    # 创建日志格式
    formatter = logging.Formatter(
        '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
    )
    console_handler.setFormatter(formatter)

    # 添加处理器到logger
    logger.addHandler(console_handler)

    return logger


# 获取logger实例
logger = setup_logger()


def main():
    try:
        # 可能出错的代码
        logger.info("尝试打开文件...")
        open("不存在的文件.txt")
    except Exception as e:
        # 记录错误日志(包含堆栈信息)
        logger.error(f"文件操作失败: {str(e)}", exc_info=True)
        # 也可以使用 logger.exception() 达到同样效果
        # logger.exception("文件操作失败")
        """
        exc_info=True:

            关键参数,指示记录器同时记录完整的异常堆栈信息
            
            会输出异常发生时的调用堆栈轨迹(traceback)
            
            等同于使用logger.exception()方法,但更加灵活
        """


if __name__ == "__main__":
    main()

 

posted @ 2025-04-15 09:02  tslam  阅读(28)  评论(0)    收藏  举报