Python的logging模块是用于日志记录的标准库,它提供了丰富的功能来满足不同级别的日志需求,从简单的调试信息到复杂的日志记录策略。在Python程序中使用logging模块可以帮助开发者跟踪程序运行状态,诊断错误,以及在多线程或多进程环境中进行有效的日志管理。 我们来看一下logging模块的基本用法。在示例代码中,首先导入了logging和sys模块。接着创建了一个名为"endlesscode"的Logger对象,这是日志记录的核心,负责生成日志消息。然后定义了一个Formatter对象,用于设置日志输出的格式,包括记录器名称、时间戳、日志级别和消息本身。 接下来,创建了两个Handler对象:一个FileHandler将日志记录到"test.log"文件中,另一个StreamHandler将日志输出到标准错误(sys.stderr)。每个Handler都有自己的Formatter,用于决定如何格式化日志消息。通过调用logger.addHandler()方法将这两个Handler添加到Logger中,这样,当logger发出日志消息时,它们会被传递给所有关联的Handler进行处理。 关于`setLevel()`方法,它可以设置Logger的最低日志级别。如果设置了ERROR级别,那么低于此级别的日志(如INFO或DEBUG)将不会被记录。在示例中,虽然有注释掉的`logger.setLevel(logging.ERROR)`行,但如果没有这行,日志级别默认为NOTSET,这意味着所有级别都会被记录。 一个Logger可以添加多个Handler,这意味着日志信息可以在多个目的地(如文件和控制台)同时输出。在代码中,即使移除了stream_handler,"fuckgov"的错误日志仍然会被file_handler写入文件,因为file_handler仍然与logger关联。 logging模块还提供了一个`basicConfig()`函数,用于快速设置基础的日志配置。这个函数常用于程序启动时一次性配置日志系统,它可以设置日志级别、格式、日期格式,以及文件名和追加模式。如果root logger没有定义任何Handler,调用如debug(), info(), warning(), error()和critical()等函数时,`basicConfig()`会被自动调用。 在多logging写日志的场景下,示例中的两行`basicConfig()`可能会引起混淆。实际上,它们都配置了相同级别的日志,并且指向相同的文件LOG_FILENAME。在这种情况下,第二行的配置会覆盖第一行,因此所有的日志都将被记录到LOG_FILENAME指定的文件中,而LOG_FILE变量并未起到作用。logging.info('this is a test msg')将向LOG_FILENAME文件写入一条INFO级别的日志。 Python的logging模块提供了灵活的日志管理机制,可以通过设置不同的Logger、Handler和Formatter来适应各种应用场景。理解这些核心概念有助于编写出更健壮、更易于维护的代码,并确保在遇到问题时能够迅速找到解决方案。





剩余41页未读,继续阅读


















- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- S7-1500与S210运动控制功能介绍
- 用PLC和MCGS做机械手控制程序.doc
- 谐波污染下400V网络无功功率补偿回路的设计和研究.docx
- 百科全书类数据库产品设计思路及策略剖析.docx
- 单片机多功能交通灯系统实施方案.doc
- 试论建立医院实习生档案管理信息化系统的设想.docx
- 通信行业统计报表指标详解.doc
- S210测量输入功能介绍
- 大数据时代党校档案管理的突破形式.docx
- “案例引导、项目驱动”教学法在《-NET程序设计语言》课程中的应用.doc
- 跨境电子商务对我国国际贸易的影响及对策研究.docx
- 电力监控系统安全防护实施方案(模板).docx
- S210伺服驱动系统产品介绍
- 企业门户网站需求分析.doc
- 浅议电气自动化在电气工程中的融合运用.docx
- 我国医疗信息化行业竞争模式纵向深化产品矩阵横向联手云商巨头.docx



评论0