使用logging模块日志调试

python Logging日志记录模块详解 写在篇前   logging是Python的一个标准库,其中定义的函数和类为应用程序和库的开发实现了一个灵活的事件日志系统。Python logging 的配置由四个部分组成:Logger、Handlers、Filter、Formatter。本篇博客将依次介绍这四个主要部分以及logging的基本应用。   在开始之前,我们有必要先了解一下,什么时候我们才有必要使用logging模块,什么时候抛出... 阅读详情

就是利用logging模块,在代码合适的地方插入输出log语句,把合适的信息输出到log文件中,通过查看log文件分析代码的执行情况。

优点:
logging模块可以指定输出格式和内容(可以输出时间,代码的行号,当前运行程序的名称、当前运行的函数名称、进程ID等等),因此能获得更精确的调试信息,应用场景更广泛,可以应用于生产环境。
服务器不需要关闭,直接查看日志分析错误。
发现问题后解决,再用热修复技术把错误修补上。
缺点:
需要入侵代码,也就是要修改代码;使用更复杂。

默认情况下,logging将日志打印到屏幕,日志级别为WARNING;
日志级别大小关系为:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET,当然也可以自己定义日志级别。
打印到终端
import logging
logging.debug(‘This is debug message’)
logging.info(‘This is info message’)
logging.warning(‘This is warning message’)
logging.error(“This is error message”)
logging.critical(“This is critical message”)

通过logging.basicConfig函数对日志的输出格式及方式做相关配置
logging.basicConfig函数各参数:
filename: 指定日志文件名
filemode: 和file函数意义相同,指定日志文件的打开模式,‘w’或’a’
format: 指定输出的格式和内容,format可以输出很多有用信息,如上例所示:
%(levelno)s: 打印日志级别的r数值
%(levelname)s: 打印日志级别名称
%(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
%(filename)s: 打印当前执行程序名
%(funcName)s: 打印日志的当前函数
%(lineno)d: 打印日志的当前行号
%(asctime)s: 打印日志的时间
%(thread)d: 打印线程ID
%(threadName)s: 打印线程名称
%(process)d: 打印进程ID
%(message)s: 打印日志信息
datefmt: 指定时间格式,同time.strftime()
level: 设置日志级别,默认为logging.WARNING
stream: 指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略
import logging
logging.basicConfig(
level=logging.DEBUG,
format=’%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s’,
datefmt=’%a, %d %b %Y %H:%M:%S’,
filename=‘myapp.log’,
filemode=‘w’)

logging.debug(‘This is debug message’)
logging.info(‘This is info message’)
logging.warning(‘This is warning message’)

将文件同时输出到文件和屏幕
import logging
logging.basicConfig(
level=logging.DEBUG,
format=’%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s’,
datefmt=’%a, %d %b %Y %H:%M:%S’,
filename=‘myapp.log’,
filemode=‘w’)

#################################################################################################
#定义一个StreamHandler,将INFO级别或更高的日志信息打印到标准错误,并将其添加到当前的日志处理对象#
console = logging.StreamHandler()
console.setLevel(logging.INFO)
formatter = logging.Formatter(’%(name)-12s: %(levelname)-8s %(message)s’)
console.setFormatter(formatter)
logging.getLogger(’’).addHandler(console)
#################################################################################################

logging.debug(‘This is debug message’)
logging.info(‘This is info message’)
logging.warning(‘This is warning message’)

Pdb
pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点、单步调试、进入函数调试、查看当前代码、查看栈片段、动态改变变量的值等。

优点:
功能强大,使用简单
缺点:
需要入侵代码,也就是要修改代码;使用更复杂。

pdb是基于命令行的调试工具,非常类似gnu的gdb(调试c/c++)。
命令
简写命令
作用
break
b
设置断点
continue
c
继续执行程序
list
l
查看当前行的代码段
step
s
进入函数
return
r
执行代码直到从当前函数返回
quit
q
中止并退出
next
n
执行下一行
print
p
打印变量的值
help
h
帮助
args
a
查看传入参数

回车
重复上一条命令
break
b
显示所有断点
break lineno
b lineno
在指定行设置断点
break file:lineno
b file:lineno
在指定文件的行设置断点
clear num

删除指定断点
bt

查看函数调用栈帧
常用操作
l---->list 显示当前的代码
n---->next 向下执行一行代码
c---->continue 继续执行代码
b---->break 添加断点
clear -->删除断点
p---->print 打印一个变量的值
s---->step 进入到一个函数
a---->args 打印所有的形参数据
q---->quit退出调试
r---->return 快速执行到函数的最后一行

避坑指南:Abaqus网格划分中90%用户会遇到的5个质量陷阱(附解决方案) 本文深入剖析Abaqus网格划分中90%用户会遇到的5个典型质量陷阱,包括单元扭曲、扫掠网格失败、尺寸梯度控制等,并提供工程级解决方案。通过Python脚本和虚拟拓扑等技巧,帮助用户提升网格质量,确保有限元分析结果的可靠性,适用于CAE工程师和仿真分析师。 阅读详情

相关推荐

基于FSL的DTI数据预处理流程

最近在学习处理DTI数据,总结了一份应用FSL做DTI数据预处理的流程与大家交流交流。如果有错误的地方欢迎大家指正!        我用的数据是Philips的数据,如果是GE或者西门子的数据可能会有所不同。   原始数据:包括3DT1数据和高分辨率DTI数据,均是dicom格式。 工具:MRICRON和FSL,所有的命令均在Linux的终端中运行。   1.格式转换:将后缀名为dcm

zaza_zaza的博客 2万+

必备logging初始配置

import logging import sys logger = logging.getLogger() logger.setLevel(logging.INFO) rf_handler = logging.StreamHandler(sys.stderr) rf_handler.setLevel(logging.DEBUG) rf_handler.setFormatter(logging.Formatter("%(asctime)s - %(name)s - %(levelname)s %(mess

M_Power2的博客 335

【吃瓜教程】周志华西瓜书课后习题第一章答案

第一章 1.1表1.1中若只包含编号为1和4的两个样例,试给出相应的版本空间。 编号 色泽 根蒂 敲声 好瓜(标记) 1 青绿 蜷缩 浊响 是Y 4 乌黑 稍蜷 沉闷 否N 知识储备: 假设空间: 所有假设组成的空间 版本空间:与训练集一致的假设集合 从假设空间到版本空间算法大致如下: 1.删除与正例不一致的假设且删除与反例一致的假设 2.删除与正例不一致的假设 3.删除与反例一致的假设 具体选择哪种

MaxQuYY的博客 8370

python logging模块

参考: python中logging模块上篇 Python Logging 模块完全解读 django日志logging的配置以及处理 一、简介 1、简介 Python 中的 logging 模块可以让你跟踪代码运行时的事件,当程序崩溃时可以查看日志并且发现是什么引发了错误。Log 信息有内置的层级——调试(debugging)、信息(informational)、警告(warnings)、错误(error)和严重错误(critical)。你也可以在 logging 中包含 traceback 信息。不管是

光明小学王小雨的博客 637

DC-DC 转换器中的压电谐振器:当前状态和限制

在功率转换器应用中,居里温度较低的谐振器的 k 2和 Q M显着降低会导致效率降低,需要仔细的热处理。由于使用 PR 的功率转换器在不同的条件下运行,包括温度范围、电压偏置和功率电平,因此不可避免地会出现非线性效应,必须妥善解决这一问题,以免影响转换器的性能。等效电路模型(Butterworth Van-Dyke 或 BVD 模型)将压电谐振器在其机械谐振附近的电响应转换为一个简单电路,该电路由与由电极形成的输入电容 C 0并联的串联 RLC 动分支组成,见图图 1 还显示了阻抗与频率的关系。

2301_79716471的博客 1297

Facebook登录协议逆向实战:从加密参数到完整流程解析(附Python代码)

本文深入解析了Facebook登录协议的逆向工程实战,详细拆解了从关键加密参数(如`lgndim`、`encpass`)定位到完整登录流程的实现。文章提供了Python代码示例,重点阐述了加密逻辑的深度解析、加密函数的本地化实现,并解决了Crypto.js异步调用等常见问题,为研究Web安全和协议逆向的开发者提供了实用参考。

metal的博客 1311

锐捷交换机基本功能配置

一、日志记录: 1.记录LOG日志: ruijei>en ruijie#config t ruijie(config)#logging file flash:syslog 7 (log名称为syslog,等级为7) ruijie(config)#logging file flash:syslog 1024 (文件大小为1024k) ruijie(config)#logging buffered 1024(缓冲区大小为1024K) ruijie(config)#logging userinfo

u013121273的博客 1万+

LVGL开发新选择:深度对比NXP GUI Guider与SquareLine Studio,免费版够用吗?

本文深度对比了LVGL开发中两款主流工具NXP GUI Guider与SquareLine Studio的核心差异,包括功能定位、设计能力、代码生成质量和硬件适配等方面。针对不同项目需求,分析了免费版工具的适用性,帮助开发者根据预算和功能需求做出明智选择。特别关注了GUI设计工具在嵌入式开发中的实际应用效果。

weixin_26976635的博客 427

python笔记-8(logging模块、re模块、栈与队列)

一、Logging模块日志 1、logging导入 Import logging 2、知道5个日志级别的等级关系 Debug->info->warning->error->critical 3、输出5种日志的基本方式 logging.debug ('xxxx') logging.info('xxx') logging.waring('xx...

weixin_30385925的博客 384

头歌操作系统 课后作业4.3:段页式内存管理 答案 无解析

头歌操作系统 课后作业4.3:段页式内存管理 答案 无解析

kercii的博客 7363

汇川Easy系列PLC系统PID指令编程应用(增量型)

增量式PIDS7-1200/1500增量式PID(输出归一化、支持PWM输出)_西门子1200pid算法公式-优快云博客文章浏览阅读1k次。本文介绍了S7-1200/1500 PLC中增量式PID算法的应用,包括输出归一化和PWM输出。通过详细解析,阐述了PID输出如何限制在0.0-1.0之间,并且如何将PID输出与PWM占空比关联,适用于温度等控制场景。

RXXW_Dor的博客 1422

Jtti:Python中logging日志模块代码怎么调试

这篇文章主要介绍“Python中logging日志模块代码怎么调试”,在日常操作中,相信很多人在Python中logging日志模块代码怎么调试问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python中logging日志模块代码怎么调试”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

JttiSEO的博客 206

智能办公助手——OpenClaw办公自动化集成(2026办公版)

OpenClaw智能办公助手是一款集成任务管理、文档处理等功能的办公自动化系统。该系统采用Python实现,核心功能包括:1)任务管理系统,支持任务增删改查、状态跟踪和统计报表生成;2)文档智能助手,提供文档处理能力。任务管理模块具备优先级设置、状态变更、时间记录等功能,并能生成包含完成率等指标的任务报告。该系统旨在通过自动化办公流程提升工作效率,减少重复性工作。开发者可利用这些模块构建完整的智能办公解决方案。

一键难忘的博客 349

Python中使用Logging模块进行调试和日志记录

可以移植到任何项目的Logging模块,使用起来超爽,要不要来试试~

穿越临界点的博客 727

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

python logging模块 通用日志打印信息 调试信息

import logging import os import time import sys class LogGen(object): loggers = {} def __init__(self): self.dir = '{}/logs'.format(os.path.dirname(os.getcwd())) self.create...

zhao3250的博客 516

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Python中logging日志模块代码调试

大家好,为了进行调试和错误跟踪,人们在整个代码库中广泛使用日志,今天来看看如何在代码中定义日志,并探讨日志的权限。

csdn1561168266的博客 561

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

AutoGen日志系统实战:如何用Python logging模块打造AI开发调试神器

本文详细介绍了如何利用Python logging模块为AutoGen框架打造高效的AI开发调试日志系统。通过区分跟踪日志和结构化日志的双轨机制,开发者可以在开发阶段获得清晰的调试信息,在生产环境实现高效的监控分析。文章包含从基础配置到ELK集成、分布式追踪等高级技巧的完整实战指南,帮助AI开发者构建专业级日志系统。

jj890的博客 156

【Python】logging 模块:标准日志库,记录日志信息、调试程序、监控系统

logging是Python的标准日志库,用于记录日志信息、调试程序、监控系统,适用于应用开发、服务器监控、数据分析等场景。logging主要功能:支持不同级别的日志(DEBUG、INFO、WARNING、ERROR、CRITICAL),可以输出到控制台、文件、远程服务器,支持日志格式化(时间、模块、行号等),支持日志滚动(按大小、时间分割日志文件)。logging.basicConfig()用于简单日志,getLogger()创建Logger,适用于复杂应用,FileHandler()输出到文件

彬彬侠的博客 857

Python日志系统实战:AutoGen框架下如何用logging模块打造AI开发调试神器

本文详细解析了如何在AutoGen框架下利用Python的logging模块构建高效的AI开发调试日志系统。通过双轨日志架构(跟踪日志与结构化日志)的设计,结合多智能体交互追踪、上下文感知日志等实战技巧,帮助开发者提升AI系统的调试效率与生产监控能力。文章还涵盖了日志级别策略优化、性能热点分析等高级应用场景。

nokia的博客 663

基于Python中的logging日志模块进行代码调试

为了进行调试和错误跟踪,人们在整个代码库中广泛使用日志。这是因为与传统的打印方法相比,日志提供了优越的权限和好处。在这篇文章中,我们来看看如何在代码中定义日志,并探讨日志的权限。

weixin_39915649的博客 155

python调试方法logging_Python实用教程系列——Logging日志模块

上篇文章讲述了Python中的相关异常的知识——Python实用教程系列——异常处理,包括异常的种类以及异常的处理方式,以及使用实例的方式说明了一些常用异常的处理。这次,我们来讲述一下Python中的另一个实用的教程,日志相关的知识。很多的小伙伴在平时写代码的时候,基本上使用的都是使用print()函数来进行一些日志的打印,使用print()来进行一些代码的调试,在较小的程序中这样做是可以的。但是...

weixin_39684495的博客 300

Python日志模块(logging)最佳实践:让调试更高效

基础阶段统一日志格式实现分级记录配置文件轮转进阶阶段引入异步日志实现结构化输出添加上下文信息高级阶段集成日志分析平台实现智能告警建立日志规范体系某金融项目通过分阶段优化日志系统,使故障定位时间从平均4.2小时缩短至18分钟,同时日志存储成本降低65%。建议根据项目规模选择合适方案,逐步完善日志体系。

这家伙很懒,什么都没有留下 1152

Python常用模块 之 logging:日志模块_python中日志模块longging 难不难学

软件开发中通过日志记录程序的运行情况是一个开发的好习惯,对于错误排查和系统运维都有很大帮助。Python标准库自带日志模块,程序的日志功能直接调用标准库的日志模块即可通过日志,开发者可以清楚的了解发生了哪些事件,包括出现了哪些错误。

m0_60607895的博客 1180

告别print调试!Python logging模块全方法详解+实战,让你的日志能力脱胎换骨(附案例)

你是不是也这样排查问题:代码里塞满print("变量x=", x),上线前又得一行行删掉;测试环境跑得好好的,一到生产就抓瞎,因为根本没留记录;出异常时全靠用户截图,自己只能靠脑补还原现场;想过滤一些无关输出,只能手动注释、取消注释,循环往复……print是新手的好朋友,却是工程的慢性毒药——它无法分级、不能持久化、没有时间戳、难以定向输出。而 Python 自带的 logging模块,就是专治这些痛点的“日志瑞士军刀”。这篇文章,我将彻底拆解logging。

2401_84107944的博客 312

如何使用 Python logging 模块记录和追踪程序运行状态进行调试

在软件开发中,调试是确保程序正确运行的关键步骤。虽然断点调试是一种直观的调试方式,但当程序变得复杂或在生产环境中运行时,日志记录(logging)通常是更高效的选择。通过日志,开发者可以记录程序的运行状态、变量值以及异常信息,从而快速定位问题。Python 提供了功能强大的内置模块——`logging`,它可以帮助我们记录和追踪程序的运行状态,方便调试和后续维护。本文将介绍 `logging` 模块的基本使用方法,以及如何通过日志高效地调试程序。

1148

python服务端开发调试日志系统_Python之日志处理(logging模块)

From: https://www.cnblogs.com/yyds/p/6901864.html本节内容日志相关概念logging模块简介使用logging提供的模块级别的函数记录日志logging模块日志流处理流程使用logging四大组件记录日志配置logging的几种方式向日志输出中添加上下文信息参考文档一、日志相关概念日志是一种可以追踪某些软件运行时所发生事件的方法。软件开发人员可以向他...

weixin_39549852的博客 180
上一篇: __slots__,元类
WWzong
博客等级 码龄9年 1粉丝 7原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值