前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Python】使用logging打日志

【Python】使用logging打日志

作者头像
keloli
发布2018-09-10 17:49:31
9470
发布2018-09-10 17:49:31
举报
文章被收录于专栏:视觉求索无尽也

logging介绍:

我们经常使用print()函数打印一些信息到控制台,方便的查看结果和一些调试信息。print()确实是方便和易用,但是也有一些缺点,比如打印出来的信息不能保存,再次运行程序时,之前打印出来的结果就被清空了。 Python中内置一个日志模块——logging,通过它我们就可以很方便的在Python代码中记录简单的程序日志。

logging使用:

logging模块将日志分为了五个等级(从低到高):

  • DEBUG:调试信息,通常在诊断问题的时候用得着;
  • INFO:普通信息,确认程序安装预期运行;
  • WARNING:警告信息,表示发生了意想不到的事情,或者指示接下来可能会出现一些问题,但是程序还是继续运行;
  • ERROR:错误信息,程序运行中出现了一些问题,一些功能没有执行;
  • CRITICAL:危险信息,一个严重的错误,导致程序无法继续运行。 上述的五个等级的日志信息分别使用:logging模块的debug()、info()、warning()、error()、critical()方法来实现。 默认情况下,logging使用的日志级别是warning,这表示只有在这个级别及其以上级别的日志信息才会被记录,所以默认情况下debug信息和info信息都不会被显示出来。
代码语言:javascript
复制
# 测试logging的等级
import logging
logging.info("打印信息")
logging.warning("警告信息")
logging.error("出现了错误")

# 控制台输出:
WARNING:root:警告信息
ERROR:root:出现了错误
代码语言:javascript
复制
# 我们使用logging模块的basicConfig()方法,修改一个日志输出等级为INFO
import logging
logging.basicConfig(level=logging.INFO)
logging.error("出现了错误")
logging.info("打印信息")
logging.warning("警告信息")

# 控制台输出:
INFO:root:打印信息
WARNING:root:警告信息
ERROR:root:出现了错误
代码语言:javascript
复制
# 记录的日志信息除了打印到控制台之外,我们还能够将其写入文件中。同样是使用basicConfig()方法进行设置
import logging
logging.basicConfig(level=logging.INFO,filename='test.log')
logging.error("出现了错误")
logging.info("打印信息")
logging.warning("警告信息")

# 执行后会将以上信息写到“test.log”文件下,重复执行会将信息追加在原来的文件后
代码语言:javascript
复制
# 如果希望每次log都覆盖原来的log,就在basicConfig()方法中使用filemode参数进行设置
import logging
logging.basicConfig(level=logging.INFO,filename='test.log',filemode='w')
logging.error("出现了错误")
logging.info("打印信息")
logging.warning("警告信息")

# 执行后本次程序输出的log将会将原来的log内容覆盖
代码语言:javascript
复制
# 如果我们想改变日志消息的格式呢,使用basicConfig()方法,利用其format参数进行设置
import logging
logging.basicConfig(level=logging.INFO,filename='test.log',format="%(levelname)s:%(message)s")
logging.error("出现了错误")
logging.info("打印信息")
logging.warning("警告信息")

# 这次long输出的信息就不包含'root'

# logging支持的格式还不止这两种,我们来看看:
%(asctime)s:日志创建时的普通时间;
%(created)f:日志创建时的时间(由time.time()返回);
%(filename)s:文件名;
%(funcName)s:调用日志记录的函数;
%(levelname)s:日志消息的文本级别;
%(levelno)s:日志消息的数字级别;
%(lineno)d:调用日志消息的行号;
%(msecs)d:创建时间的毫秒部分;
%(message)s:日志消息;
%(name)s:日志器的名称;
%(pathname)s:记录日志的源文件的路径名;
%(process)d:进程ID;
%(processName)s:进程名;
%(thread)d:线程ID;
%(threadName)s:线程名;
%(relativeCreated)d:创建日志记录的时间(以毫秒为单位)

# 借助于这些格式,我们可以自定义日志记录,比如显示时间:
import logging
logging.basicConfig(level=logging.INFO,filename='test.log',format="%(levelname)s:%(asctime)s:%(message)s")
logging.error("出现了错误")
logging.info("打印信息")
logging.warning("警告信息")

参考资料:

https://zhuanlan.zhihu.com/p/31893724 https://zhuanlan.zhihu.com/p/32043593

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.02.14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • logging介绍:
  • logging使用:
  • 参考资料:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档