日志级别
CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET
级别 | 何时使用 |
---|---|
DEBUG | 详细信息,典型地调试问题时会感兴趣。 |
INFO | 证明事情按预期工作。 |
WARNING | 表明发生了一些意外,或者不久的将来会发生问题(如‘磁盘满了’)。软件还是在正常工作。 |
ERROR | 由于更严重的问题,软件已不能执行一些功能了。 |
CRITICAL | 严重错误,表明软件已不能继续运行了。 |
可自定义日志级别
import sys
import logging
logging.basicConfig(
level=logging.WARNING,
format='%(asctime)s %(levelname)s %(message)s',
stream=sys.stdout)
logging.basicConfig 函数 各参数:
filename: 指定日志文件名
filemode: 和file函数意义相同,指定日志文件的打开模式,’w’或’a’
format: 指定输出的格式和内容,format可以输出很多有用信息,如上例所示:
- %(levelno)s: 打印日志级别的数值
- %(levelname)s: 打印日志级别名称
- %(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]
- %(filename)s: 打印当前执行程序名
- %(funcName)s: 打印日志的当前函数
- %(lineno)d: 打印日志的当前行号
- %(asctime)s: 打印日志的时间
- %(thread)d: 打印线程ID
- %(threadName)s: 打印线程名称
- %(process)d: 打印进程ID
- %(message)s: 打印日志信息
datefmt: 指定时间格式,同time.strftime()
level: 设置日志级别,默认为logging.WARNING
stream: 指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略
下面是我写的一段代码用例:
import os
import sys
import logging
logging.basicConfig(
level=logging.WARNING,
format='%(asctime)s %(levelname)s %(message)s',
stream=sys.stdout)
PATH_0 = './log'
PATH_1 = './NoExistFolder'
def main():
if not os.path.isdir(PATH_0):
logging.error("\n Dir '%s' not found. ", PATH_0)
sys.exit(1)
print ' Dir %s is found. ' % PATH_0
if not os.path.isdir(PATH_1):
logging.error("\n Dir '%s' not found. ", PATH_1)
sys.exit(1)
print ' Dir %s is found. ' % PATH_1
if __name__ == '__main__':
main()
Result:
Dir ./log is found.
2017-06-20 20:47:22,409 ERROR Dir './NoExistFolder' not found.
Process finished with exit code 1