day6 subprocess模块、logging模块

    logging模块

    很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误、警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,logging的日志可以分为 debug()info()warning()error() and critical() 5个级别,下面我们看一下怎么用:

---恢复内容结束---

    logging模块

    很多程序都有记录日志的需求,并且日志中包含的信息即有正常的程序访问日志,还可能有错误、警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,logging的日志可以分为 debug()info()warning()error() and critical() 5个级别,下面我们看一下怎么用:

%(name)s Logger的名字
%(levelno)s

数字形式的日志级别

%(levelname)s 文本形式的日志级别
%(pathname)s

调用日志输出函数的模块的完整路径名,可能没有

%(filename)s

调用日志输出函数的模块的文件名

%(module)s

调用日志输出函数的模块名

%(funcName)s

调用日志输出函数的函数名

%(lineno)d

调用日志输出函数的语句所在的代码行

%(created)f

当前时间,用UNIX标准的表示时间的浮 点数表示

%(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数
%(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
%(thread)d 线程ID。可能没有
%(threadName)s

线程名。可能没有

%(process)d 进程ID。可能没有
%(message)s 用户输出的消息

    想给日志文件加上日期,如下所示:

    import logging
    """basicConfig()是设置日期格式的形式,level是日期的等级,datafmt是日期的格式"""
  logging.basicConfig(format='%(asctime)s %(message)s', datefmt='%m/%d/%Y %I:%M:%S %p',level=logging.DEBUG)
  logging.warning('is when this event was logged.')

  logging.basicConfig(format="%(asctime)s %(message)s",datefmt="%m/%d/%Y %I:%M:%S %p",level=logging.DEBUG)
  logging.debug("I love python")

    运行结果如下:

    05/30/2017 06:40:33 AM is when this event was logged.
  05/30/2017 06:40:33 AM I love python

    如果想同时把log打印在屏幕和文件日志里,就需要了解一点复杂的知识了

    Python 使用logging模块记录日志涉及四个主要类,使用官方文档中的概括最为合适:

    (1)logger提供了应用程序可以直接使用的接口

    (2)handler将(logger创建的)日志记录发送到合适的目的输出

    (3)filter提供了细度设备来决定输出哪条日志记录

    (4)formatter决定日志记录的最终输出格式

posted @ 2017-05-30 07:31  (野生程序员)  阅读(259)  评论(0编辑  收藏  举报