Python基础之日志封装
Python基础之日志封装一、日志等级Debug : 打印全部的日志,详细的信息,通常只出现在诊断问题上Info : 打印info,warning,error,critical级别的日志,确认一切按预期运行Warning : 打印warning,error,critical级别的日志,一个迹象表明,一些意想不到的事情发生了,或表明一些问题在不久的将来(例如磁盘空间低),这个软件还能按预期工作Error : 打印error,critical级别的日志,更严重的问题,软件没能执行一些功能Critical : 打印critical级别,一个严重的错误,这表明程序本身可能无法继续运行级别排序CRITICAL ERROR WARNING INFO DEBUG在控制台输出日志import logging logging.basicConfig(levellogging.INFO) # 通过basicConfig设置日志级别 logging.debug(这是一条 debug 等级的日志) logging.info(这是一条 info 等级的日志) logging.warning(这是一条 warning 等级的日志) logging.error(这是一条 error 等级的日志) logging.critical(这是一条 critical 等级的日志) INFO:root:这是一条 info 等级的日志 WARNING:root:这是一条 warning 等级的日志 ERROR:root:这是一条 error 等级的日志 CRITICAL:root:这是一条 critical 等级的日志运行上述代码在控制台分别回显了 INFO 、WARNING、ERROR、CRITICAL级别的日志是因为在日志配置函数basicConfig( ) 中 level logging.INFO等级低于 INFO 的 DEBUG 日志不会被记录而等级等于或高于 INFO 的日志都会被记录二、logging中常用方法1、logging.Formatter 这是一个配置日志格式的类自定义日志按何种样式记录和展示2、logger logging.getLogger( ): 生成一个logging模块的主体为程序提供记录日志的接口并根据日志级别把对应日志分发给不同 handler3、logging.FileHandler( ): 把日志记录输出到文件4、logging.StreamHandler( ): 把日志记录输出出控制台5、logger.setLevel( ): 设置总的日志级别6、logger.addHandler( ): 添加一个Handler (FileHandler、StreamHandler7、Handler.setLevel( ): 设置handler 的日志级别8、Handler.setFormatter( ): 设置handler 的输出格式三、Formatter常用格式%(levelno)s: 打印日志级别的数值 %(levelname)s: 打印日志级别名称 %(pathname)s: 打印当前执行程序的路径 %(filename)s: 打印当前执行程序名 %(funcName)s: 打印日志的当前函数 %(lineno)d: 打印日志的当前行号 %(asctime)s: 打印日志的时间 %(thread)d: 打印线程ID %(threadName)s: 打印线程名称 %(process)d: 打印进程ID %(message)s: 打印日志信息四、把日志输出到控制台import logging logger logging.getLogger() logger.setLevel(logging.INFO) ch logging.StreamHandler() # 输出日志到控制台 ch.setLevel(logging.INFO) # 输出到控制台的日志等级 # 定义日志handler的输出格式 fmt logging.Formatter(%(asctime)s - %(filename)s:[%(lineno)s] - [%(levelname)s] - %(message)s) ch.setFormatter(fmt) logger.addHandler(ch) logger.info(这是一个 INFO 日志) # 2021-06-30 10:29:46,043 - study02.py:[15] - [INFO] - 这是一个 INFO 日志1、首先通过getLogger( ) 创建一个logging的主体对象logger供程序调用2、通过 setLevel( ) 设置日志总的等级3、创建一个Handler对象chstreamHandler 为输出日志到控制台4、为这个Handler实例ch 通过setLevel 设定输出到控制台的日志等级5、通过Formatter定义日志的输出格式fmt6、通过调用Handler的setFormatter把fmt对象作为参数传入来定义输出到控制台的日志格式7、调用logger.addHandler把Handler对象ch添加到logger主体中五、把日志输出到文件import logging import time import os logger logging.getLogger() logger.setLevel(logging.INFO) currTime time.strftime(%Y-%m-%d) log_py_path os.path.abspath(__file__) # 当前py文件的绝对路径,会定位到对应py文件 log_dir_path os.path.split(log_py_path)[0] # 当前py文件的文件夹路径 pro_path os.path.dirname(log_dir_path) # 当前py文件对应文件夹的上层目录路径 Log_path pro_path /Logs/ log_name Log_path currTime .log fh logging.FileHandler(file_path, modea) # mode a 为在原日志上追加w为覆盖 输出日志到文件 fh.setLevel(logging.INFO) # 输出到 file 的日志等级 # 定义日志handler的输出格式 fmt logging.Formatter(%(asctime)s - %(filename)s:[%(lineno)s] - [%(levelname)s] - %(message)s) fh.setFormatter(fmt) logger.addHandler(fh) logger.info(这是一个 INFO 日志)1、首先通过getLogger( ) 创建一个logging的对象主体logger供程序调用2、通过 setLevel( ) 设置日志总的等级3、time.strftime(%Y-%m-%d) 获取当地时间按年-月-日4、os.path.abspath(os.getcwd( )) 获取当前工作目录的绝对路径5、创建一个Handler对象fhFileHandler 为输出日志到文件6、为这个Handler对象fh 通过setLevel 设定输出到文件的日志等级7、通过Formatter定义日志的输出格式fmt8、通过调用Handler的setFormatter把fmt对象作为参数传入来定义输出到控制台的日志格式9、调用logger.addHandler把Handler对象ch添加到logger主体中封装一个日志类import logging import time import os class Logger: def __init__(self, name, logger_levelINFO, stream_levelINFO, file_levelINFO): # 创建一个 logger self.__logger logging.getLogger(name) # 设置Log等级总开关 self.__logger.setLevel(logger_level) # 创建 handler用于日志写入 currTime time.strftime(%Y-%m-%d-%H) # 获取日期年-月-日-时 log_py_path os.path.abspath(__file__) # 当前py文件的绝对路径,会定位到对应py文件 log_dir_path os.path.split(log_py_path)[0] # 当前py文件的文件夹路径 pro_path os.path.dirname(log_dir_path) # 当前py文件对应文件夹的上层目录路径 Log_path pro_path \\Logs\\ log_name Log_path currTime .log fh logging.FileHandler(log_name, modea) # mode a 为在原日志上追加w为覆盖 输出日志到文件 fh.setLevel(file_level) # 输出到 file 的日志等级 ch logging.StreamHandler() # 输出日志到控制台 ch.setLevel(stream_level) # 输出到控制台的日志等级 # 定义日志handler的输出格式 fmt logging.Formatter(%(asctime)s - %(filename)s:[%(lineno)s] - [%(levelname)s] - %(message)s) fh.setFormatter(fmt) ch.setFormatter(fmt) # 添加 logger 到 handler里面 self.__logger.addHandler(fh) self.__logger.addHandler(ch) def get_logger(self): return self.__logger

相关新闻

光储耦合系统经济性评估方法与软件应用解析

光储耦合系统经济性评估方法与软件应用解析

1. 光储耦合模式的经济性评估痛点解析 光伏储能系统的经济性评估一直是行业内的技术难点。传统评估方法通常面临三大困境:首先是数据采集不完整,光伏发电量、储能充放电效率、电价政策等关键参数分散在不同系统中;其次是计算模型过于简化&…

2026/8/4 9:27:01 阅读更多 →
C++编程入门:从程序骨架到面向对象的核心概念解析

C++编程入门:从程序骨架到面向对象的核心概念解析

1. 从“Hello World”到理解程序骨架很多朋友第一次接触C,可能都是从一行“Hello World”开始的。在某个集成开发环境(IDE)里,你敲下代码,点击运行,控制台蹦出那行经典的问候语,那一刻的成就感是…

2026/8/4 9:26:54 阅读更多 →
SuperAGI 技术深度解析:开发者优先的开源自主 AI Agent 框架

SuperAGI 技术深度解析:开发者优先的开源自主 AI Agent 框架

摘要:2023 年 5 月,TransformerOptimus 团队在 GitHub 上开源了 SuperAGI——一个面向开发者的自主 AI Agent 框架。它在两周内突破 10,000 Star,如今累计超过 17,600 Star,成为 AI Agent 领域最活跃的开源项目之一。本文将从架构设计、ReAct 推理范式、工具系统、记忆机制…

2026/8/4 9:26:48 阅读更多 →

最新新闻

数据中台建了三年还是没人用,问题可能不在数据本身

数据中台建了三年还是没人用,问题可能不在数据本身

据Gartner统计,到2024年仍有超过70%的企业数据中台项目未能达成预期的业务价值,大量数据团队疲于做ETL和数据治理,业务部门却依然在抱怨"取数难、报表慢、看不懂"。这个数字背后藏着一个被反复讨论却始终没解决的问题——企业花了大…

2026/8/4 10:06:50 阅读更多 →
SQL盲注攻防实战:布尔与时间盲注原理、自动化工具及防御方案

SQL盲注攻防实战:布尔与时间盲注原理、自动化工具及防御方案

1. 项目概述:盲注,SQL注入的“暗战” 在Web安全测试的实战中,SQL注入无疑是攻击者最常用、也最危险的武器之一。我们常说的SQL注入,往往指的是那种能直接回显数据库查询结果的“显错注入”或“联合查询注入”,攻击者能…

2026/8/4 10:06:50 阅读更多 →
GBase 8a数据库脱敏功能介绍(一)

GBase 8a数据库脱敏功能介绍(一)

数据脱敏是一种数据保护技术,它通过对敏感信息(如身份证号、手机号、银行卡号等)进行变形、遮盖或替换,在保证数据可用性的前提下,有效防止敏感数据泄露。在南大通用GBase 8a数据库(gbase database&#xf…

2026/8/4 10:06:50 阅读更多 →
锁定式 vs 生成式——电商商品图的两条技术路线及其对平台合规性的影响

锁定式 vs 生成式——电商商品图的两条技术路线及其对平台合规性的影响

1. 问题定义电商卖家在选择 AI 做图工具时,普遍关注的是"生成效果"——画质、细节、创意图的美感。但 2026 年平台合规性的急剧收紧(Amazon C2PA检测、Temu 颜色一致性扫描、FTC AI标注新规),使"工具架构的本质差异…

2026/8/4 10:06:50 阅读更多 →
糖酵解抗体套装在疾病机制研究中的应用与操作要点

糖酵解抗体套装在疾病机制研究中的应用与操作要点

1. 糖酵解抗体套装:打开疾病机制研究的钥匙实验室里最让人着迷的时刻,往往发生在那些看似普通的抗体与样本相遇的瞬间。三年前我第一次使用糖酵解通路抗体套装研究肝癌样本时,在荧光显微镜下看到HK2(己糖激酶2)在癌组织…

2026/8/4 10:06:50 阅读更多 →
Windows远程桌面多用户支持:RDP Wrapper Library 1.6.2智能解决方案揭秘

Windows远程桌面多用户支持:RDP Wrapper Library 1.6.2智能解决方案揭秘

Windows远程桌面多用户支持:RDP Wrapper Library 1.6.2智能解决方案揭秘 【免费下载链接】rdpwrap RDP Wrapper Library 项目地址: https://gitcode.com/gh_mirrors/rdpw/rdpwrap 在Windows家庭版和专业版之间,远程桌面功能一直存在差异。家庭版用…

2026/8/4 10:05:50 阅读更多 →

日新闻

AI Agent白手起家26: 使用标准事件驱动大模型实践

AI Agent白手起家26: 使用标准事件驱动大模型实践

纲要 练习目标:掌握大模型标准事件的调用回顾 LangChain 中的核心标准事件 invokestreambatchastream_eventswith_structured_output 环境准备实战代码:多种事件调用对比 同步调用与流式输出批量处理异步事件流监听结构化输出 运行说明与预期结果总结与扩…

2026/8/4 0:00:40 阅读更多 →
dealsea是什么?跨境卖家必知的美国deal站入门指南

dealsea是什么?跨境卖家必知的美国deal站入门指南

说实话,第一次听说美国这个老牌折扣网站的跨境卖家,十个有八个会问同一个问题:这个平台到底是干嘛的?我见过一个做家居出口的朋友,他在亚马逊上月销二十万美金,却从来没用过它。我给他看了首页——一屏一屏…

2026/8/4 0:01:40 阅读更多 →
清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

清华大学重磅EST:植物自导电闪蒸焦耳热600°C/2600°C两步法!稀土超积累植物秒级转化为CeO₂-石墨烯电催化剂!

通讯作者:邓兵、刘建国通讯单位:清华大学DOI:https://doi.org/10.1021/acs.est.6c00603研究背景稀土元素(REEs)是清洁能源技术与电子器件不可或缺的核心原料,然而传统提取方式依赖能耗高、排放大的采矿与强…

2026/8/4 0:01:40 阅读更多 →

周新闻

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

最大流算法详解:从水管网络到Ford-Fulkerson与Dinic实战

1. 从水管网络到最大流:一个核心问题的诞生想象一下,你是一个城市供水系统的总工程师。你的城市有多个水源(水库),需要通过一个复杂的地下管道网络,将水输送到各个居民区。每条管道都有其最大通水能力&…

2026/8/3 4:58:13 阅读更多 →
基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

基于Springboot的企业门户网站(源码+LW+调试文档+讲解)

温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台…

2026/8/3 1:53:31 阅读更多 →
MATLAB xcorr函数详解:从互相关原理到四大实战应用

MATLAB xcorr函数详解:从互相关原理到四大实战应用

1. 从一次信号“找茬”说起:为什么我们需要互相关几年前,我在处理一组声学传感器数据时遇到了一个棘手的问题。我有两个麦克风记录了一段相同的音频信号,理论上它们接收到的声音波形应该非常相似,只是由于麦克风位置不同&#xff…

2026/8/4 5:26:40 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/3 13:07:03 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/3 5:19:38 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/3 8:27:36 阅读更多 →