前言
如果你想在调试时能看到错误信息,但又不想在生产环境中输出错误信息,可以使用 log 库来记录错误信息,在调试时输出 log,在生产环境中不输出。
步骤
首先导包
import logging
然后开启logging
logging.basicConfig(filename='example.log', level=logging.DEBUG)
其中 filename='example.log
表示把 logging 中的信息输出到 example.log 文件中,如果不需要可省略。filename 参数指定了日志文件的名称, level 参数指定了日志级别, logging.DEBUG 就是打印所有debug及以上级别的log
在生产环境中,我们可以关闭 logging 或者更改 logging level,不会有错误信息的输出。
当然你也可以通过
logging.basicConfig(filename='example.log', filemode='w', level=logging.DEBUG)
来进行配置,filemode=‘w’ 代表每次运行程序都会清空之前的日志
应当了解的知识
logging 模块支持五种日志级别,从高到低分别是:
- CRITICAL (50): 严重错误,程序无法继续运行
- ERROR (40): 错误信息,需要人工干预
- WARNING (30): 警告信息,程序可以继续运行,但可能会有问题
- INFO (20): 普通信息,比如连接成功
- DEBUG (10): 调试信息,帮助理解程序运行过程 使用
logging.basicConfig(level=logging.LEVEL_NAME) 来配置日志级别,LEVEL_NAME
是要设置的级别名称,可以是 CRITICAL, ERROR, WARNING, INFO,DEBUG
如果你设置日志级别为 logging.WARNING,只会输出级别为 WARNING 及以上级别的日志信息.
例如:
logging.basicConfig(filename='example.log', level=logging.WARNING)
其他
logging.exception()
函数与 logging.error()
函数类似,但除了记录错误信息之外,它还会记录错误的调用栈。这使得它在调试时特别有用。
如果在之前已经调用了 logging.basicConfig(filename=‘example.log’) 来配置日志输出到文件,logging.exception(e) 会把错误信息记录到 example.log 文件中。如果没有进行配置,默认会在控制台输出错误信息。