python标准库--logging模块

发布时间:2017-12-11 20:49:39编辑:Run阅读(3713)

    logging模块的几个级别,默认情况下Logging模块有6个级别,代码如下

    #!/usr/bin/env python
    # coding: utf-8
    __author__ = 'www.py3study.com'
    import logging
    print(logging.NOTSET)
    print(logging.DEBUG)
    print(logging.INFO)
    print(logging.WARNING)
    print(logging.ERROR)
    print(logging.CRITICAL)

    结果为下

    blob.png

    它们的值为0-50(也可以自定义级别),这些级别的用处是,先将自己的日志定一个级别,logging模块发出的信息级别高于定义的级别,将在标准输出(屏幕)显示出来,发出的信息级别低于定义的级别则忽略,如果未定义级别,默认定义的级别是WARNING

    使用logging最简单的方法就是logging.basicConfig([**kwargs])

    这个函数可用的参数有

    filename     用指定的文件名创建FiledHandler(后面会具体讲解handler的概念),这样日志会被存储在指定的文件中

    filemode     文件打开方式,在指定了filename时使用这个参数,默认值为'a'还可以指定为'w'

    datefmt      指定日期时间格式

    level            设置rootlogger(后面会具体讲到)的日志级别

    stream        用指定的stream创建streamhandler,可以指定输出到sys.stderr,sys.stdout或者文件,默认为sys.stderr,若同时列出了filename和stream两个参数,则stream参数会被忽略


    参数中的format参数可能用到的格式化串

    %(name)s:   Logger的名字

    %(levelno)s:   数字形式的日志级别

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

    %(pathname)s:   调用日志输出函数的模块的完整路径名

    %(filename)s:   调用日志输出函数的模块的文件名

    %(module)s:   调用日志输出函数的模块名

    %(funcname)s:   调用日志输出函数的函数名

    %(lineno)d:   调用日志输出函数的语句所在的代码行

    %(created)f:   当前时间,用unix标准的表示时间的浮点数表示

    %(asctime)s:   字符串形式的当前时间,默认格式是'20017-07-08 16:49:45,896' 逗号后面的是毫秒

    %(message)s:   用户输出的消息


    参数中的datefmt是日期的格式化,最常用的几个格式化是:

    %Y:   年份的长格式,如2017

    %y:   年份的短格式,如 17

    %m:   月份,01~12

    %d:   日期,01~31

    %H:   小时,0~23

    %w:   星期,0~6,星期天是0

    %M:   分钟,00~59

    %S:   秒,00~59


    下面利用logging.basicConfig写个最基本的日志模块应用程序中,编写testLogging.py代码如下

    #!/usr/bin/env python
    # coding: utf-8
    __author__ = 'www.py3study.com'
    import logging
    class TestLogging(object):
        def __init__(self):
            logFormat = '%(asctime)-12s %(levelname)-8s %(name)-10s %(message)-12s'
            logFilename = 'testlog.txt'
            logging.basicConfig(level=logging.INFO, format=logFormat, filename=logFilename, filemode='w')
            logging.debug('debug message')
            logging.info('info message')
            logging.warning('warning message')
            logging.error('error message')
            logging.critical('critical message')
    
    if __name__ == '__main__':
        tl = TestLogging()

    运行程序,会在当前目录下生成一个testlog.txt文件,内容如下

    blob.png

    默认的logging级别是logging.INFO,而logging.debug的级别低于logging.INFO,所有没有显示logging.debug的内容

    在程序中关键位置插入log信息,执行python程序时出现什么问题。可以直接查找日志文件,无须再一步步地debug试调


关键字