python Logger 高级教程

电源管理芯片PMIC (Power Management Integrated Circuits,简称:将电源电压转换为电子设备各部分所需的适当电压水平,包括升压(Boost)、降压(Buck)和升降压(Buck-Boost)转换。:控制和限制流向电子设备各部分的电流,以保护组件免受过电流损害。:管理多个电源轨,为不同的部分提供稳定的电能控制。电源轨指电路板上传输电力的线路。电源监控:提供过电压、欠电压、过电流、过热和短路保护,以防止电子设备损坏。:通过高效的电源转换技术,减少能量损耗,提高能源利用效率。 阅读详情

高级教程

logging library 四个模块

  • lLoggers暴露的接口,给代码使用
  •  Handlers  把log 记录送到合适的destination
  •  Filter  过滤器,决定哪个log记录被输出
  •  Formatters  ,最终输出的log记录格式

  Logevent information 在loggers ,handlers ,filters 和formatters 中传递。

获得Logger:

我们通过Logger 类的实例来调用方法来记录日志。每个实例有不同的名字,并且被记录在namesapce里。

如果用于模块级别的日志记录,一个惯例是用以下模式来命名Logger:

ger= logging.getLogger(__name__)

可用来追踪包/模块 ,从logger名字直观上找到事件发生处。

Log的Destination:

日志记录可以被写入 files,HTTPGET/POST ,通过SMTP写入email,socket,或者系统级别日志,比如Window NT的事件日志。

Destinationsare served by handler classes. 如果内置的Handler 无法满足你的需求,可以定义自己的handlerClass。

下图是log 记录的传递过程


Logger类

三个作用:

1.        给代码暴露接口

2.        基于filter Object决定展示哪些log messages 被展示

3.        Logger object 传递相关logmessages 给相关handler

 

Loggerl类有两类方法:

  1. 用来配置的方法

 

1.    Logger.setLevel(lvl):说明会被处理的最低Level的log message

下面是每个logging level 对应的值

Level

Numeric value

CRITICAL

50

ERROR

40

WARNING

30

INFO

20

DEBUG

10

NOTSET

0

 

 

2.        Logger.addHandler(hdlr)和Logger.removeHandler(hdlr)

Logger 中增加或者删除Handler

3.        Logger.addFilter(filt) 和Logger.removeFilter(filt )

在Logger中增加或者删除 Filter


  2.记录message的方法:

Logger.debug(msg, *args, **kwargs)

Logger.info(msg, *args, **kwargs)

Logger.warning(msg, *args, **kwargs)

Logger.error(msg, *args, **kwargs)

Logger.critical(msg, *args, **kwargs)

Logger.exception(msg, *args, **kwargs)在Logger.error层级

Logger.log(lvl, msg, *args, **kwargs)

Handlers

负责将Log message 分派到指定的destination

Handler.setLevel(lvl)

Handler.setFormatter(form) 他使用的Formatter

标准库包括比如StreamHandler(像sys.stout咿呀将logging输出)和FileHandler(将logging 输出于硬盘文件中)

Formatters

负责配置log message 的最终顺序,结构,及内容

 

多模块记录

多次调用logging.getLogger('someLogger')会返回同一个logger object的引用。不仅在一个module里这样,多个module也是这样。除此之外还可以在一个Module里生成父模块,在另一Module生成子 logger

 

 

main module:

importlogging
importauxiliary_module
 
# create logger with 'spam_application'
logger= logging.getLogger('spam_application')
logger.setLevel(logging.DEBUG)
# create file handler which logs even debug messages
fh= logging.FileHandler('spam.log')
fh.setLevel(logging.DEBUG)
# create console handler with a higher log level
ch= logging.StreamHandler()
ch.setLevel(logging.ERROR)
# create formatter and add it to the handlers
formatter= logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
ch.setFormatter(formatter)
# add the handlers to the logger
logger.addHandler(fh)
logger.addHandler(ch)
 
logger.info('creating an instance of auxiliary_module.Auxiliary')
a= auxiliary_module.Auxiliary()
logger.info('created an instance of auxiliary_module.Auxiliary')
logger.info('calling auxiliary_module.Auxiliary.do_something')
a.do_something()
logger.info('finished auxiliary_module.Auxiliary.do_something')
logger.info('calling auxiliary_module.some_function()')
auxiliary_module.some_function()
logger.info('done with auxiliary_module.some_function()')

 

auxiliary module:

importlogging
 
# create logger
module_logger= logging.getLogger('spam_application.auxiliary')
 
classAuxiliary:
    def__init__(self):
        self.logger= logging.getLogger('spam_application.auxiliary.Auxiliary')
        self.logger.info('creating an instance of Auxiliary')
    defdo_something(self):
        self.logger.info('doing something')
        a =1+1
        self.logger.info('done doing something')
 
defsome_function():
    module_logger.info('received a call to "some_function"')

 

输出

The output looks like this:

2005-03-23 23:47:11,663 - spam_application - INFO -
   creating an instance of auxiliary_module.Auxiliary
2005-03-23 23:47:11,665 - spam_application.auxiliary.Auxiliary - INFO -
   creating an instance of Auxiliary
2005-03-23 23:47:11,665 - spam_application - INFO -
   created an instance of auxiliary_module.Auxiliary
2005-03-23 23:47:11,668 - spam_application - INFO -
   calling auxiliary_module.Auxiliary.do_something
2005-03-23 23:47:11,668 - spam_application.auxiliary.Auxiliary - INFO -
   doing something
2005-03-23 23:47:11,669 - spam_application.auxiliary.Auxiliary - INFO -
   done doing something
2005-03-23 23:47:11,670 - spam_application - INFO -
   finished auxiliary_module.Auxiliary.do_something
2005-03-23 23:47:11,671 - spam_application - INFO -
   calling auxiliary_module.some_function()
2005-03-23 23:47:11,672 - spam_application.auxiliary - INFO -
   received a call to 'some_function'
2005-03-23 23:47:11,673 - spam_application - INFO -
   done with auxiliary_module.some_function()

 

 链接:

https://docs.python.org/2/howto/logging.html#logging-advanced-tutorial

https://docs.python.org/2/howto/logging-cookbook.html?highlight=multiple%20log

 

Claude Code 错误解决方案 API Error: 前缀通用错误 本文分析了Claude Code与Anthropic API通信时出现的通用错误处理问题。当API返回未分类错误时,系统会直接显示"API Error: "前缀的原始错误信息。通过错误链路追踪发现,这是由于未匹配特定错误类型时触发了通用兜底处理逻辑。文章提供了三种解决方案:查看具体错误内容、启用调试日志以及提交问题反馈,并建议用户关注错误码、使用/compact命令处理上下文超限问题。最后强调这些未分类错误是预期行为,用户应通过错误消息中的线索自行排查或反馈开发者。 阅读详情

相关推荐

第一届“龙信杯”电子数据取证竞赛Writeup

第一届“龙信杯”电子数据取证竞赛Writeup

toto的博客 1万+

Python标准模块--logging

1 logging模块简介 logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等;相比print,具备如下优点: 可以通过设置不同的日志等级,在release版本中只输出重要信息,而不必显示大量的调试信息; print将所有信息都输出到标准输出中,严重影响开发者从标准输出中查看其它数据;logging则可以由开发者决定将信息输...

weixin_34149796的博客 1万+

中科蓝讯蓝牙耳机SDK实战:从目录解析到消息处理框架

本文深入解析中科蓝讯蓝牙耳机SDK的目录结构与消息处理框架,提供从硬件驱动到蓝牙功能定制的实战指南。重点剖析SDK核心模块如消息队列机制、按键事件处理及电量报告优化,并分享二次开发中的调试技巧与避坑经验,助力开发者高效完成TWS耳机功能定制。

weixin_30335575的博客 388

Python 搞懂Logger模块让老板刮目相看

ChatGPTLogger是Python标准库中logging模块提供的一种日志记录工具。它允许你在应用程序中记录不同级别的日志消息,以便于调试、追踪和分析应用程序的运行。使用Logger有助于管理和组织日志输出,以及提供可配置的日志记录。是主要的接口,负责发送日志消息。应用程序通常会创建一个或多个Logger对象,每个Logger对象负责一组相关的功能或模块。决定将日志消息发送到何处。Handler可以将日志消息输出到控制台、文件、网络等不同的目标。定义日志消息的输出格式。

qq_54078539的博客 6331

自抗扰(ADRC)控制原理及控制器设计

自抗扰控制原理以及控制器设计

weixin_43487974的博客 3万+

7.7 数据分析助手:用AI洞察业务数据价值

摘要:AI数据分析助手构建指南 本文介绍了如何构建AI数据分析助手,帮助企业从业务数据中提取价值。系统包含四大核心模块:自然语言理解模块解析用户查询意图,查询规划模块转换为SQL语句,数据可视化模块生成图表,以及洞察生成模块提供深度分析。文章通过销售数据分析助手案例,展示了从数据库准备到自然语言处理的完整实现流程,包括示例代码和系统架构图。该解决方案可降低数据分析门槛,让业务人员直接参与数据探索,提升决策效率。

yonggeit的博客 4092

自学之Python常用库——logging

logging库日志级别(默认的级别是warning) 级别 级别数值 使用时机 DEBUG 10 详细信息,常用语调试 INFO 20 程序正常运行过程中产生的一些信息 WARNING 30 警告用户,虽然程序还在正常工作但有可能发生错误 ...

carian_violet的博客 1052

VASP+机器学习快速收敛AIMD

本文介绍了如何利用VASP结合机器学习技术快速收敛AIMD(从头算分子动力学)模拟。首先,通过训练机器学习力场,生成关键文件如ML_ABN(包含结构数据集)、ML_FFN(存储回归结果)和ML_LOGFILE(记录训练日志)。接着,配置INCAR文件以设置计算参数,包括并行化、分子动力学和机器学习相关参数。KPOINTS文件用于定义K点网格。计算完成后,备份CONTCAR文件作为后续模拟的初始结构。最后,利用训练好的力场文件进行纯机器学习力场分子动力学模拟,并提交任务执行。

qq_44812865的博客 1405

Python的Logging模块

万字长文带你学透Python的Logging模块,文章通俗易懂且带有相关代码演示,具体案例助你理解

m0_60981735的博客 1万+

Polyworks脚本开发学习笔记(十五)-用Python连接Polyworks的COM组件

Polyworks脚本开发学习笔记(十五)-利用Python连接Polyworks的COM组件

qq_43662503的博客 2502

Kubernetes(K8s)从入门到精通系列之一:一篇文章了解K8s全部核心知识点

Kubernetes(K8s)从入门到精通系列之一:一篇文章了解K8s全部核心知识点

zhengzaifeidelushang的博客 849

Python日志系统详解:Logger完全指南

本文系统介绍了Python内置日志模块logging的核心用法与最佳实践。内容涵盖Logger、Handler、Formatter等日志系统的基本组成,详细讲解了如何通过代码、配置文件、字典和YAML等多种方式灵活配置日志输出。文中不仅提供了丰富的代码示例,还总结了日志分级、日志轮转、异常记录、性能优化等实用技巧,并针对常见问题给出了解决方案。无论是初学者还是有经验的开发者,都能通过本文快速掌握Python日志系统的原理与高效用法,让你的程序具备专业、可维护的日志能力。

于归promax 5048

CAN总线介绍及硬件设计

1. CAN是什么 CAN 是 Controller Area Network 的缩写(以下称为 CAN),是 ISO*1 国际标准化的串行通信协议。 在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统 被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很 多,线束的数量也随之增加。为适应“减少线束的数量”、“......

sinat_15677011的博客 9992

python logger filter_python Logger 高级教程

高级教程logging library四个模块lLoggers暴露的接口,给代码使用Handlers 把log 记录送到合适的destinationFilter 过滤器,决定哪个log记录被输出Formatters ,最终输出的log记录格式Logevent information 在loggers ,handlers ,filters 和formatters 中传递。获得Logger:我...

weixin_34121505的博客 607

精雕软件(JDpaint) 5.5 绿色版

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

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

python中的logger包的详细使用教程

Python 的 logging 模块是标准库中用于记录日志的核心工具,支持多级别、多目标、多格式的日志管理。通过 logging.getLogger(name) 可以创建或获取 Logger 对象,并通过 setLevel() 设置日志级别(如 DEBUG、INFO 等)。Logger 支持层级结构,便于模块化日志管理。Handler 负责将日志发送到不同目标(如控制台、文件),常用类型包括 StreamHandler、FileHandler、RotatingFileHandler 等。通过 Format

学无止尽,谨言慎行! 3256

WINCC7.3破解文件

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

Python logging 模块实用教程

logging 是 Python 标准库中用于记录日志的模块,它提供了灵活的日志记录系统,可以满足从简单脚本到复杂应用程序的各种日志需求。

qq_17275369的博客 922

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Python logging库

Python logging库1. logging 简介2. Basic logging Tutorial2.1 使用logging 屏幕打印2.2 使用logging 保存文件2.3 多个模块loggingAdvanced Logging TutorialReference 1. logging 简介 logging是一种跟踪某些软件运行时发生的事件的方法。 软件开发人员可以将logging添加到他们的代码中,以表明某些事件已经发生。 这个事件可以由打印信息描述,该信息中可以包含变量。 开发者也可以赋予事

u010170039的博客 1665

​​Python 日志模块 Logger 实战教程​

​本教程面向需要稳定、可维护日志系统的 ​​ 开发者,涵盖从基础用法到生产级最佳实践,帮助你快速掌握 ​​ 的核心概念、配置方式与进阶技巧。

Rysxt_的博客 925

Python logger模块

Python 的logging模块是一个功能强大的日志记录系统,它允许你记录各种级别的日志信息,包括调试信息、信息消息、警告、错误和严重错误。通过使用logging模块,你可以有效地监控和调试你的应用程序。以下是一些关于如何使用logging。

m0_65482549的博客 960

Fluent-Logger-Python 使用教程

Fluent-Logger-Python 使用教程 1. 项目目录结构及介绍 Fluent-Logger-Python 是一个用于记录事件并发送到 Fluentd 或 Fluent Bit 的 Python 库。以下是项目的目录结构及文件介绍: fluent-logger-python/ ├── .github/ # GitHub 工作流配置目录 │ └── work...

gitblog_00939的博客 441

python logger 打印多次的问题与解决方案

学习 Python 不久碰到过这个问题, 记得当时没查出是什么问题. 刚刚无意中发现了这个问题的原因及解决方案, 记录一下. 参考: https://juejin.im/post/5bc2bd3a5188255c94465d31 第一种情况 参考文章中介绍说产生这个问题的原因是因为创建了自定义的 Logger 对象后, 又使用了 logging 中的日志输出方法,这些方法使用的是默认配置的 L...

geekqian的博客 1万+

python logger是什么_python中的logger模块讲解

logging.StreamHandler: 日志输出到流,可以是sys.stderr、sys.stdout或者文件logging.FileHandler: 日志输出到文件日志回滚方式,实际使用时用RotatingFileHandler和TimedRotatingFileHandlerlogging.handlers.BaseRotatingHandlerlogging.handlers.Rota...

weixin_39820997的博客 1134

Python multiprocessing.Pool 中使用 logger

Python multiprocessing.Pool 中使用 logger 问题 由于 python 中使用多进程时, 需要将参数进行序列化和反序列化, 所有 logger 参数通常无法正确传入工作函数中, 同时一般也不建议直接将 logger 对象作为参数传入到多进程中. 那么如何解决在多进程 workder 函数中打印日志呢? 解决思路 在每个 worker 函数中创建独立的 logger ...

Bear_861110453的专栏 2317

python中logger日志模块的使用

一般,我们做一些简单的状态输出都会用print,但是这是最简单的情况下使用的工具。当我们的程序比较复杂的时候,我们会使用日志文件,特别是程序运行的时间特别久,中间可能存在一些问题,需要后面来看的时候。         所以,python自带了一个很有用的库,logger,也就是日志记录。         使用起来还是很方便的。 #!/usr/bin/env python # -*- codi

lyx的专栏 9642

python logger.debug_python中的logger模块详细讲解

logger 提供了应用程序可以直接使用的接口handler将(logger创建的)日志记录发送到合适的目的输出filter提供了细度设备来决定输出哪条日志记录formatter决定日志记录的最终输出格式logging模块介绍Python的logging模块提供了通用的日志系统,熟练使用logging模块可以方便开发者开发第三方模块或者是自己的Python应用。同样这个模块提供不同的日志级别,并可...

weixin_39817347的博客 1820

python logger.debug_对python中的logger模块全面讲解

logging模块介绍Python的logging模块提供了通用的日志系统,熟练使用logging模块可以方便开发者开发第三方模块或者是自己的Python应用。同样这个模块提供不同的日志级别,并可以采用不同的方式记录日志,比如文件,HTTP、GET/POST,SMTP,Socket等,甚至可以自己实现具体的日志记录方式。下文我将主要介绍如何使用文件方式记录log。logging模块包括logger...

weixin_39914752的博客 1400
上一篇: python Loging 入门
下一篇: os.path.abspath 源码分析
yes1cpp
博客等级 码龄14年 15粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值