Python: logging日志模块详解

来源:互联网 发布:windows怎么开ssh 编辑:程序博客网 时间:2024/06/05 20:41

日志级别

  CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET

级别 何时使用 DEBUG 详细信息,典型地调试问题时会感兴趣。 INFO 证明事情按预期工作。 WARNING 表明发生了一些意外,或者不久的将来会发生问题(如‘磁盘满了’)。软件还是在正常工作。 ERROR 由于更严重的问题,软件已不能执行一些功能了。 CRITICAL 严重错误,表明软件已不能继续运行了。

可自定义日志级别

import sysimport logginglogging.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 osimport sysimport logginglogging.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_1if __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

其他学习链接

  python 的日志logging模块学习

  python logging模块使用教程

  使用python的logging模块