Python日志输出 📅 发布时间:2026/7/13 2:32:17 👁️ 浏览次数: 1.日志相关概念概述日志是记录程序运行时关键步骤、报错异常的一种重要信息。对查看业务运行情况异常排查有着非常重要的作用。1.1 日志级别DEBUG调试信息最低。INFO一般信息。WARNING警告可能有问题。ERROR错误已影响程序。CRITICAL严重错误最高。1.2 日志格式2. logging实现日志打印实现步骤1.配置基本的日志配置1.1 设置日志级别1.2 自定义日志输出格式2.获取日志记录器(日志对象)3.打印输出不同级别日志importlogging# 配置基本的日志设置logging.basicConfig(levellogging.INFO,# 设置日志级别format%(asctime)s - %(levelname)s - %(name)s - %(message)s# 自定义日志格式)# 获得日志记录器loggerlogging.getLogger(Example)# 记录不同级别的日志logger.debug(这是调试信息通常用于开发)logger.info(程序运行正常)logger.warning(注意可能有小问题)logger.error(程序异常)logger.critical(严重错误程序可能崩溃) 输出 2026-07-12 20:07:29,987 - INFO - Example - 程序运行正常 2026-07-12 20:07:29,987 - WARNING - Example - 注意可能有小问题 2026-07-12 20:07:29,987 - ERROR - Example - 程序异常 2026-07-12 20:07:29,987 - CRITICAL - Example - 严重错误程序可能崩溃 3. 将日志存储到文件importlogging# 日志的基本配置logging.basicConfig(filenamer./logs/app.log,# 将日志输出到./logs/app.log文件中levellogging.INFO,filemodea,# 追加模式format%(asctime)s - %(levelname)s - %(name)s - %(message)s,# 自定义文件格式encodingutf-8)# 创建日志记录器loggerlogging.getLogger(Test)# 日志输出logger.debug(这是调试信息通常用于开发)logger.info(程序运行正常)logger.warning(注意可能有小问题)logger.error(程序异常)logger.critical(严重错误程序可能崩溃)3.2 同时输出到控制台和文件1.创建日志记录器设置全局level2.创建控制台处理器设置日志级别3.创建文件日志处理器设置日志级别4.定义日志输出格式5.给两个日志控制器设置输出格式6.两个日志控制器加入大管家—日志记录器importlogging# 创建日志记录器loggerlogging.getLogger(namedemo03)logger.setLevel(levellogging.DEBUG)# 创建控制台处理器console_handlerlogging.StreamHandler()console_handler.setLevel(levellogging.DEBUG)# 创建文件日志处理器file_handlerlogging.FileHandler(filenamer./logs/app.log,modea,encodingUTF-8)file_handler.setLevel(levellogging.WARN)# 自定义日志格式formatterlogging.Formatter(%(asctime)s - %(levelname)s - %(name)s - %(message)s)# 给两个控制器设置输出格式console_handler.setFormatter(formatter)file_handler.setFormatter(formatter)# 两个日志控制器加入到日志记录器中(大管家)logger.addHandler(console_handler)logger.addHandler(file_handler)# 打印日志logger.debug(调试信息仅写入文件)logger.info(程序运行正常)logger.error(发生错误) 输出 2026-07-12 20:28:44,450 - DEBUG - demo03 - 调试信息仅写入文件 2026-07-12 20:28:44,450 - INFO - demo03 - 程序运行正常 2026-07-12 20:28:44,450 - ERROR - demo03 - 发生错误 代码分析使用Handler分别控制输出目标StreamHandler输出到控制台。FileHandler输出到文件。不同处理器可设置不同级别灵活性更高。4.日志模块封装——工程结构4.1 整体结构logging_lesson/├── logs/│ └── app.log # 日志文件├── utils/│ └── logger.py # 日志配置模块├── main.py # 主程序入口└── requirements.txt # 依赖文件本例无需额外依赖4.2 日志模块配置(utils/logger.py)实现步骤1.新建python包——为封装之后引用2.导入日志包3.定义日志处理函数(模块名, 日志路径/名称)4.日志文件、路径不存在时创建对应目录、文件5.创建日志记录器设置全局level6.创建控制台处理器设置日志级别7.创建文件日志处理器设置日志级别8.定义日志输出格式9.给两个日志控制器设置输出格式10.两个日志控制器加入大管家—日志记录器importlogging,os# 定义、封装日志处理函数defsetup_logger(name,log_filerlogs/app01.log):# 判断传入的日志文件是否存在没有就新建os.makedirs(os.path.dirname(log_file),exist_okTrue)# 创建日志记录器loggerlogging.getLogger(name)logger.setLevel(levellogging.DEBUG)# 创建控制台日志处理器consoler_handlerlogging.StreamHandler()consoler_handler.setLevel(levellogging.DEBUG)# 创建文件日志处理器file_handlerlogging.FileHandler(filenamelog_file,modea,encodingUTF-8)file_handler.setLevel(levellogging.INFO)# 自定义日志格式formatterlogging.Formatter(%(asctime)s - %(levelname)s - %(name)s - %(message)s)# 为两个控制器添加自定义格式consoler_handler.setFormatter(formatter)file_handler.setFormatter(formatter)# 将两个控制器加入大管家(日志记录器)进行调度ifnotlogger.handlers:logger.addHandler(consoler_handler)logger.addHandler(file_handler)returnlogger4.2 主函数调用日志模块调用方式入口函数__main__— main() — process_data()fromutils.logger01importsetup_logger# 调用、初始化封装好的日志处理器loggersetup_logger(nameqingyu)# 定义数据处理函数defprocess_data(data):logger.debug(f开始处理数据{data})ifnotdata:logger.error(数据为空无法处理)returnNonelogger.info(数据处理完成)returndata.upper()# 主函数defmain():logger.info(程序启动...)resultprocess_data(datahello)ifresult:logger.info(f数据处理结果:{result})else:logger.error(数据处理失败)logger.info(程序结束)
SQLMap实战:检测银行储物柜管理系统SQL注入漏洞(CVE-2023-0562) 1. 项目概述与核心价值最近在复盘一些金融行业的老旧系统安全评估案例,发现一个挺有意思的共性问题:很多看起来“坚不可摧”的后台管理系统,其核心风险往往源于一个看似不起眼的输入点。就拿银行储物柜管理系统来说,它负责管理客户… 2026/7/13 2:32:17
C++高性能日志系统实战:5分钟用spdlog告别凌乱printf调试 1. 项目概述:为什么我们需要一个像样的日志系统?如果你写过C程序,尤其是稍微复杂一点的,比如一个网络服务、一个游戏引擎,或者一个数据处理工具,你肯定经历过这样的场景:程序在测试环境跑得好好… 2026/7/13 2:30:16
零基础入门台词混剪:54W博主同款素材+剪辑实操,轻松做出爆款 # 零基础入门台词混剪:54W博主同款素材剪辑实操,轻松做出爆款在短视频平台,一句“我命由我不由天”配上震撼的BGM,就能瞬间点燃观众的共情。台词混剪,正是利用影视剧、综艺中的高光台词,通过剪辑、节奏和情… 2026/7/13 2:30:16
AI时代程序员的核心护城河:计算本质理解力 1. 这不是危言耸听:当AI能写出90%的代码,剩下那10%才是你饭碗的护城河“Coding is useless in 2025”——这句话刚看到时,我手里的咖啡差点洒在键盘上。不是因为愤怒,而是太熟悉了。去年带一个刚毕业的实习生做内部工具开发&#… 2026/7/13 4:13:03
Claude Code构建主动型AI开发工作流:从代码探索到自动化CI/CD 在日常开发中,我们经常遇到这样的场景:面对一个陌生的代码库,需要快速理解其架构;或者遇到一个棘手的bug,需要花费大量时间排查;又或者需要为现有代码添加测试、重构旧代码、创建PR等重复性工作。这些任务虽… 2026/7/13 4:13:03
高颜值匿名聊天室源码 | 纯静态前端原创 无需后端进行部署,打包后体积小巧,UI细节经过打磨,电脑、手机两端均可适配。 项目特色一览 🔹界面设计方面 – 主色调固定#409EFF,整体设计简约干净,没有繁杂花哨特效 – 定制专属开场加载过渡动画&… 2026/7/13 4:11:02
C-V2X RSU 3GPP Rel.14/15 部署实战:城市路口红绿灯信息转发延迟 <100ms 实测 C-V2X RSU 3GPP Rel.14/15部署实战:城市路口红绿灯信息转发延迟优化全解析1. 城市路口V2X通信的核心挑战在智慧交通系统的建设中,路口红绿灯信息的实时转发是保障行车安全与效率的关键环节。传统基于视觉识别的解决方案存在天气敏感、视角受限等固有缺陷… 2026/7/13 4:05:00
Shell入门 什么是Shell shell不是具体的一个程序,是一类命令解释程序。是用户与操作系统之间的中间翻译层,能将用户输入的指令翻译后使用内核执行并返回结果。 在不同操作系统中对应不同的命令解释程序,例如:Linux中最主流的就是Bash&#x… 2026/7/13 4:00:59
Python列表底层原理:从内存布局到性能陷阱全解析 1. 项目概述:为什么“理解List[]”不是一句空话,而是Python入门真正的分水岭刚接触Python的人,十有八九会把list当成一个“能装东西的筐”——往里append、pop、index查位置,再加个for循环遍历,好像就掌握了。我带过几… 2026/7/13 4:00:59
HS2-HF Patch终极指南:如何用3步解决Honey Select 2的70+个痛点 HS2-HF Patch终极指南:如何用3步解决Honey Select 2的70个痛点 【免费下载链接】HS2-HF_Patch Automatically translate, uncensor and update HoneySelect2! 项目地址: https://gitcode.com/gh_mirrors/hs/HS2-HF_Patch 你是否曾经在Honey Select 2中遇到过… 2026/7/13 0:01:19
语音转文字工具AsrTools:让音频整理变得简单高效 语音转文字工具AsrTools:让音频整理变得简单高效 【免费下载链接】AsrTools ✨ AsrTools: Smart Voice-to-Text Tool | Efficient Batch Processing | User-Friendly Interface | No GPU Required | Supports SRT/TXT Output | Turn your audio into accurate text … 2026/7/13 0:03:19
基于深度学习的蘑菇或花卉或动漫人物或中草药货水果蔬菜等识别系统31(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_ 基于深度学习的蘑菇或花卉或动漫人物或中草药货水果蔬菜等识别系统31(设计源文件万字报告讲解)(支持资料、图片参考_相关定制)_ 独家界面!不会重复,此项目属于本人原创,若有雷同,均是盗卖,各位买… 2026/7/13 0:05:20
Git reset 与 revert 深度对比:5个关键差异与 3 种典型应用场景 Git Reset 与 Revert 深度对比:5个关键差异与3种典型应用场景在团队协作开发中,代码版本管理如同行走钢丝——一步失误可能导致整个项目陷入混乱。作为Git进阶用户,你是否曾在深夜面对错误的提交束手无策?是否在强制推送后收到同事… 2026/7/12 0:01:13
GitHub 学生包申请避坑:5个常见失败原因与开发者工具调试方案 GitHub 学生包申请技术排障指南:5个高频失败场景与开发者工具实战方案第一次尝试申请GitHub学生包时,我盯着屏幕上那个不断转圈的加载动画整整15分钟,最终只等来了一行冰冷的错误提示。这可能是许多开发者共同的经历——明明按照教程操作&… 2026/7/12 0:01:13
冒烟测试用例设计规范:5%-10%覆盖率下的3类核心场景与执行标准 冒烟测试用例设计的黄金法则:5%-10%覆盖率下的精准筛选策略在快节奏的敏捷开发环境中,冒烟测试作为质量保障的第一道防线,其重要性不言而喻。当测试资源有限而时间紧迫时,如何从海量测试用例中精准筛选出那关键的5%-10%࿰… 2026/7/13 2:34:55