Python Logging 模块的动手实践:构建一个完整的日志记录系统

Logging、日志纪录、调试、应用程序、开发

Logger的建立与使用

Logging模块的核心是Logger类。要开始使用,您需要创建一个Logger实例:

importurs
logger=ursing.er()

您可以使用.name属性来指定您的日志的Logger:

logger=ursing.er("my_application")

日志级别:定义严重性

您可以通过将level属性设置为内置级别之一来指定日志条目标严重性。级别范围从DEBUG(最不严重)到FATAL(最严重),如下所示:

level=ursing.L.DEBUG# 调试级别
level=ursing.L.INFO# 信息级别
level=ursing.L.WARNING# 告警级别

处理器:格式化和传播日志

处理器是从Logger获取日志并将其发送到特定目标的组件。内置处理器提供了开箱即用的方法:

# 将日志信息发送到标准输出(终端)
handler=ursing.mhandler()

您可以使用.fORMatter属性为您的日志定制格式:

handler.er=ursing.er(ursing.F("%(levelname)s:%(message)s"))

滤波器:只捕捉你感兴趣的日志

滤波器允许您只捕获满足特定标准的日志。使用Filter类:

filter=ursing.r()
filter.re=rs.ur("ERROR")# 仅匹配“ERROR”级别的日志

将所有内容组合在一起

将处理器和滤波器附加到Logger以建立完整的日志管道:

logger.addhandler(handler, filter)

动手示例:一个完整的日志纪录器

考虑一个在文件"example.py"中运行的应用程序。如下所示,我们使用Logging模块建立了一个全方位的日志纪录器:

importurs
logger=ursing.er("my_example_app")

# 根级别为“INFO”
logger.level=ursing.L.INFO

# 创建一个到文件“app.log”的处理器
file_handler=ursing.FH("app.log",mode="a")
file_handler.er=ursing.er(ursing.F("%(asctime)s -%(levelname)s:%(message)s"))

# 创建一个到终端的处理器
console_handler=ursing.mhandler()
console_handler.er=ursing.er(ursing.F("%(message)s"))

# 将处理器附加到日志
logger.addhandler(file_handler)
logger.addhandler(console_handler)

在应用程序中,您可以使用.log()方法在指定级别上向日志中写入信息:

logger.info("开始应用程序")
logger.error("应用程序遇到一个严重问题")

结论

Logging模块为您提供了对应用程序日志纪录的全面而灵活的控件。将其与适当的级别、处理器和滤波器结合使用,您可以建立一个健壮且有见地的日志纪录基础,以帮助您隔离问题、跟踪应用程序行为并优化性能。

以上就是Python Logging 模块的动手实践:构建一个完整的日志记录系统的详细内容,更多请关注昆居客【www.kunjuke.com】。

相关推荐:

小米米家 iOS 版 App 获 11.6.200 更新:新增能源模块、优化设备批量配网等功能

感谢网友 太二真人 的线索投递! 6 月 29 日消息,小米米家 iOS 版 App 今天更新 11.6.200 版本,主要是为场景页面新增了能源模块,以及新增设备批量配网等功能,提升实用性。附本次更新详情如下:新增:场景页面新增能源模块,可查看家中部分智能设备用电情况优化:家庭自动切换功能,根据手机定位展示家庭,可在家庭管理中开启设备批量配网功能,发现多个 BLE Mesh 设备时,可以批量选择...

OpenClaw的RAG模块怎么配置做知识库问答系统?

需配置RAG模块以启用本地知识库问答:一、创建知识库目录并存放支持格式文档;二、执行openclaw install rag安装扩展;三、用openclaw rag init向量化文档;四、启动时加--enable-rag参数;五、通过精准提问验证检索效果。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜ 如果您已安装 OpenClaw 并希...
· AI · 281238

Darktable如何使用Filmic RGB动态范围处理_Darktable Filmic模块使用教程【高级】

使用darktable的Filmic RGB模块可专业处理RAW动态范围:一、基础校准设黑/白点与8.5档宽容度;二、启用ACES对数编码提升输入精度;三、精细控制输出目标映射;四、避免与基础曲线冲突;五、批量化模板应用确保影调统一。 如果您在处理高光过曝或暗部死黑的RAW照片时,发现常规曝光与对比度调整无法兼顾细节保留与自然过渡,则很可能是动态范围控制失效。以下是使用darktable Film...

Darktable怎么使用锐化模块增强细节_Darktable照片锐化处理操作教程【技巧】

darktable锐化需综合启用智能锐化、匹配去马赛克算法、添加蒙版、联动Filmic RGB及利用历史堆栈;半径设1.2–1.5像素、强度40–60、启用边缘保护,并依场景选AMaZE或VNG4算法。 如果您在darktable中处理RAW照片时发现画面缺乏清晰度或边缘模糊,则可能是锐化参数未启用或设置不当。以下是针对锐化模块的多种操作方法: 一、启用智能锐化并配置基础参数 智能锐化模块位于暗房...

Edge浏览器如何关闭新标签页的每日微积分挑战推荐_Edge浏览器教育模块隐藏

关闭Edge新标签页“每日微积分挑战”等教育模块需五步:一、设置中关闭Microsoft Start内容及教育相关选项;二、隐私设置中停用教育个性化推荐并设跟踪防护为严格;三、新标签页悬停模块右上角点击“…”选“隐藏此内容”;四、侧边栏中关闭“学习”与“发现”入口;五、通知权限中删除bing.com/learning等教育域名授权。 如果您在打开 Microsoft Edge 浏览器的新标签页时,...

罗技G502 X Plus无线充电模块效率与体验分析【深度】

罗技G502 X Plus需搭配PowerPlay认证垫体(如G840/G843/G845)并确保硬件对齐、触点清洁、固件更新(v2026.5.1.1782)、G HUB设为“始终充电”,方可实现每小时约8.2%的稳定无线充电效率。 如果您已购入罗技G502 X Plus并尝试使用PowerPlay无线充电功能,但发现充电速度缓慢、鼠标电量不升反降或无法稳定维持供电,则可能是由于充电模块与Powe...

iPhone怎么设置语音控制 苹果手机免动手操作手机功能教程【分享】

需启用“语音控制”功能:一、在“设置→辅助功能→语音控制→设置语音控制”中下载模型(仅支持美国英语),完成后状态栏显示麦克风图标;二、可连按三次侧边/主屏幕按钮、用“嘿Siri”指令或设置开关启停;三、支持“轻点‘设置’”“向下轻扫”等精确操作命令;四、可在“自定义命令”中创建如“发工作邮箱”插入文本类快捷指令;五、通过开启“需要确认”、授权麦克风权限及关闭物理按键触发提升准确性。 如果您希望在i...

如何在Python中为测试用例添加自定义标记_通过pytest.mark进行分类执行

pytest.mark 必须作为装饰器直接作用于测试函数或类,不可写在函数外部;可叠加多个标记,执行时用 -m "mark1 and mark2" 等布尔表达式筛选;未注册标记会触发警告,需在 pytest.ini 或 pyproject.toml 中声明以避免。 pytest.mark 能不能直接用在函数外面 不能。所有 pytest.mark 必须装饰在测试函数或类上,写在函数定义之外会报 S...
· Python · 307405