Python Logging 模块完全解读_python logging详解
off999 2025-09-12 01:27 57 浏览 0 评论
私信我,回复:学习,获取免费学习资源包。
Python 中的 logging 模块可以让你跟踪代码运行时的事件,当程序崩溃时可以查看日志并且发现是什么引发了错误。Log 信息有内置的层级——调试(debugging)、信息(informational)、警告(warnings)、错误(error)和严重错误(critical)。你也可以在 logging 中包含 traceback 信息。不管是小项目还是大项目,都推荐在 Python 程序中使用 logging。本文将简单清晰地介绍如何使用 logging 模块。
为什么使用 logging?
当你运行一个 Python 脚本时,你可能想要知道脚本的哪个部分在执行,并且检视变量的当前值。
通常,可以只使用 print() 打印出你想要的信息。在小程序中,可能靠这个就足够了。
但问题是,当你处理有很多个模块的大项目时,就需要一个更加灵活的方法。
为什么?
因为代码需要经历开发、调试、审查、测试或者上线等不同阶段。在开发时你想要打印的信息类型可能和上线后你想看到的信息类型完全不同。
也就是说,在“测试”时,你可能只想看警告和错误信息,然而在“调试”时,你可能还想看到跟调试相关的信息。
如果你还想打印出使用的模块以及代码运行的时间,那么你的代码很容易变得混乱。
使用 logging 模块,这些问题就能很容易地解决。
logging 模块可以:
- 控制信息层级,仅记录需要的信息。
- 控制显示或者保存日志的时机。
- 使用内置信息模板控制日志格式。
- 知晓信息来自于哪个模块。
基本 logging 例子
logging 模块是 Python 的标准库,要使用 logging,只需要使用 logging.basicConfig() 进行基本设置。事实上,这也是可选的。
然后就可以调用 logging.{level}(message) 在控制台中显示信息。
import logging
logging.basicConfig(level=logging.INFO)
def hypotenuse(a, b):
"""计算三角形斜边"""
return (a**2 + b**2)**0.5
logging.info("{a}, {b} 的斜边是 {c}".format(a=3, b=4, c=hypotenuse(a=3, b=4)))
#> INFO:root:3, 4 的斜边是 5.0
打印出的日志信息遵循默认格式: {LEVEL}:{LOGGER}:{MESSAGE}。
上面的例子中, LEVEL 就是 INFO,因为调用的是 logging.info()。
LOGGER 为 root,因为这是默认 logger。
logger(日志记录器)类似于一个实体,你可以创建并配置它来记录不同类型和格式的消息。
你可以配置一个输出到控制台的 logger 和另一个将日志发送到文件的 logger,它们具有不同的日志记录级别,并且特定于给定模块。
最后,输出的信息就是我传递给 logging.info() 的字符串。
那么如果不设置 logging.basicConfig(level=logging.INFO) 会怎么样?
答案是 日志信息不会被打印出来。
为什么?要知道这个需要先了解 logging 的级别。
logging 的 5 个级别
logging 有 5 个不同层次的日志级别,可以将给定的 logger 配置为这些级别:
- DEBUG:详细信息,用于诊断问题。Value=10。
- INFO:确认代码运行正常。Value=20。
- WARNING:意想不到的事情发生了,或预示着某个问题。但软件仍按预期运行。Value=30。
- ERROR:出现更严重的问题,软件无法执行某些功能。Value=40。
- CRITICAL:严重错误,程序本身可能无法继续运行。Value=50。
现在,让我们回答之前提出的问题。默认 logger 是 root,其默认的 basicConfig 级别是 WARNING。也就是说,只有来自 logging.warning或者更高级别的信息才会被记录下来。
因此,logging.info() 中的信息不会被打印出来。这也是为什么 basicConfig 被设为 INFO。
如果级别使用 logging.ERROR 代替,只有来自 logging.error 和 logging.critical 的信息会被记录。
import logging
logging.basicConfig(level=logging.ERROR)
def hypotenuse(a, b):
"""计算三角形斜边"""
return (a**2 + b**2)**0.5
kwargs = {'a':3, 'b':4, 'c':hypotenuse(3, 4)}
logging.debug("a = {a}, b = {b}".format(**kwargs))
logging.info("{a}, {b} 的斜边是 {c}".format(**kwargs))
logging.warning("a={a} 和 b={b} 相等".format(**kwargs))
logging.error("a={a} 和 b={b} 不能为负".format(**kwargs))
logging.critical("{a}, {b} 的斜边是 {c}".format(**kwargs))
#> ERROR:root:a=3 和 b=4 不能为负
#> CRITICAL:root:3, 4 的斜边是 5.0
将日志记入文件
要从 root logger 将日志消息发送到文件,需要在 logging.basicConfig() 中设置 file 参数:
import logging logging.basicConfig(level=logging.INFO, filename='sample.log')
现在,所有后续日志消息都将直接记录到当前工作目录中的“sample.log“文件。如果要将其记录到另一个目录中的文件,请给出完整的文件路径。
如何更改 logging 格式
logging 模块提供了向日志消息添加各种详细信息的速记表。
fig
让我们更改日志信息格式以显示 TIME、LEVEL 和 MESSAGE。
import logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s :: %(levelname)s :: %(message)s')
logging.info("当当当!")
#> 2019-03-10 19:41:09,057 :: INFO :: 当当当!
不要对所有模块使用 root logger
让我们看下面的代码:
# 1. myprojectmodule.py import logging logging.basicConfig(filename='module.log') #----------------------------- # 2. main.py (从 myprojectmodule.py 导入代码) import logging import myprojectmodule # 运行 myprojectmodule.py 中的代码,将生成 `module.log` 文件 logging.basicConfig(filename='main.log') # 无效!
如果项目中有一个或多个模块。这些模块使用基本根模块。然后,当导入模块 myprojectmodule.py 时,将运行该模块的所有代码并配置 logger。
一旦配置好,main 文件中的 root logger 将不能再更改 root logger 设置。因为,一旦设置好 logging.basicConfig(),就不能再更改它。
如果想在不同文件中使用不同 logger,就需要创建一个新的 logger。
如何创建一个新的 logger?
可以使用 logger.getLogger(name) 方法创建一个新的 logger。
如果存在同名的 logger,则将使用该 logger。
可以给 logger 取任何名字,但是通常使用 __name__ 变量。
来源网络,侵权联系删除
私信我,回复:学习,获取免费学习资源包。
相关推荐
- 安全教育登录入口平台(安全教育登录入口平台官网)
-
122交通安全教育怎么登录:122交通网的注册方法是首先登录网址http://www.122.cn/,接着打开网页后,点击右上角的“个人登录”;其次进入邮箱注册,然后进入到注册页面,输入相关信息即可完...
- 大鱼吃小鱼经典版(大鱼吃小鱼经典版(经典版)官方版)
-
大鱼吃小鱼小鱼吃虾是于谦跟郭麒麟的《我的棒儿呢?》郭德纲说于思洋郭麒麟作诗的相声,最后郭麒麟做了一首,师傅躺在师母身上大鱼吃小鱼小鱼吃虾虾吃水水落石出师傅压师娘师娘压床床压地地动山摇。...
-
- 哪个软件可以免费pdf转ppt(免费的pdf转ppt软件哪个好)
-
要想将ppt免费转换为pdf的话,我们建议大家可以下一个那个wps,如果你是会员的话,可以注册为会员,这样的话,在wps里面的话,就可以免费将ppt呢转换为pdfpdf之后呢,我们就可以直接使用,不需要去直接不需要去另外保存,为什么格式转...
-
2026-02-04 09:03 off999
- 电信宽带测速官网入口(电信宽带测速官网入口app)
-
这个网站看看http://www.swok.cn/pcindex.jsp1.登录中国电信网上营业厅,宽带光纤,贴心服务,宽带测速2.下载第三方软件,如360等。进行在线测速进行宽带测速时,尽...
- 植物大战僵尸95版手机下载(植物大战僵尸95 版下载)
-
1可以在应用商店或者游戏平台上下载植物大战僵尸95版手机游戏。2下载教程:打开应用商店或者游戏平台,搜索“植物大战僵尸95版”,找到游戏后点击下载按钮,等待下载完成即可安装并开始游戏。3注意:确...
- 免费下载ppt成品的网站(ppt成品免费下载的网站有哪些)
-
1、Chuangkit(chuangkit.com)直达地址:chuangkit.com2、Woodo幻灯片(woodo.cn)直达链接:woodo.cn3、OfficePlus(officeplu...
- 2025世界杯赛程表(2025世界杯在哪个国家)
-
2022年卡塔尔世界杯赛程公布,全部比赛在卡塔尔境内8座球场举行,2022年,决赛阶段球队全部确定。揭幕战于当地时间11月20日19时进行,由东道主卡塔尔对阵厄瓜多尔,决赛于当地时间12月18日...
- 下载搜狐视频电视剧(搜狐电视剧下载安装)
-
搜狐视频APP下载好的视频想要导出到手机相册里方法如下1、打开手机搜狐视频软件,进入搜狐视频后我们点击右上角的“查找”,找到自已喜欢的视频。2、在“浏览器页面搜索”窗口中,输入要下载的视频的名称,然后...
- 永久免费听歌网站(丫丫音乐网)
-
可以到《我爱音乐网》《好听音乐网》《一听音乐网》《YYMP3音乐网》还可以到《九天音乐网》永久免费听歌软件有酷狗音乐和天猫精灵,以前要跳舞经常要下载舞曲,我从QQ上找不到舞曲下载就从酷狗音乐上找,大多...
- 音乐格式转换mp3软件(音乐格式转换器免费版)
-
有两种方法:方法一在手机上操作:1、进入手机中的文件管理。2、在其中选择“音乐”,将显示出手机中的全部音乐。3、点击“全选”,选中所有音乐文件。4、点击屏幕右下方的省略号图标,在弹出菜单中选择“...
- 电子书txt下载(免费的最全的小说阅读器)
-
1.Z-library里面收录了近千万本电子书籍,需求量大。2.苦瓜书盘没有广告,不需要账号注册,使用起来非常简单,直接搜索预览下载即可。3.鸠摩搜书整体风格简洁清晰,书籍资源丰富。4.亚马逊图书书籍...
- 最好免费观看高清电影(播放免费的最好看的电影)
-
在目前的网上选择中,IMDb(互联网电影数据库)被认为是最全的电影网站之一。这个网站提供了各种类型的电影和电视节目的海量信息,包括剧情介绍、演员表、评价、评论等。其还提供了有关电影制作背后的详细信息,...
- 孤单枪手2简体中文版(孤单枪手2简体中文版官方下载)
-
要将《孤胆枪手2》游戏的征兵秘籍切换为中文,您可以按照以下步骤进行操作:首先,打开游戏设置选项,通常可以在游戏主菜单或游戏内部找到。然后,寻找语言选项或界面选项,点击进入。在语言选项中,选择中文作为游...
欢迎 你 发表评论:
- 一周热门
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
