Python logging模块学习笔记 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【www.unjs.com - 电脑资料】

   

    模块级函数

    logging.getLogger([name]):返回一个logger对象,如果没有指定名字将返回root logger

    logging.debug()、logging.info()、logging.warning()、logging.error()、logging.critical():设定root logger的日志级别

    logging.basicConfig():用默认Formatter为日志系统建立一个StreamHandler,设置基础配置并加到root logger中

    示例:logging_level_example.py

    复制代码代码如下:

    import logging

    import sys

    LEVELS = {'debug': logging.DEBUG,

    'info': logging.INFO,

    'warning': logging.WARNING,

    'error': logging.ERROR,

    'critical': logging.CRITICAL}

    if len(sys.argv) > 1:

    level_name = sys.argv[1]

    level = LEVELS.get(level_name, logging.NOTSET)

    logging.basicConfig(level=level)

    logging.debug('This is a debug message')

    logging.info('This is an info message')

    logging.warning('This is a warning message')

    logging.error('This is an error message')

    logging.critical('This is a critical error message')

    输出:

    复制代码代码如下:

    $ python logging_level_example.py debug

    DEBUG:root:This is a debug message

    INFO:root:This is an info message

    WARNING:root:This is a warning message

    ERROR:root:This is an error message

    CRITICAL:root:This is a critical error message

    $ python logging_level_example.py info

    INFO:root:This is an info message

    WARNING:root:This is a warning message

    ERROR:root:This is an error message

    CRITICAL:root:This is a critical error message

    Loggers

    Logger.setLevel(lel):指定最低的日志级别,低于lel的级别将被忽略,

Python logging模块学习笔记

。debug是最低的内置级别,critical为最高

    Logger.addFilter(filt)、Logger.removeFilter(filt):添加或删除指定的filter

    Logger.addHandler(hdlr)、Logger.removeHandler(hdlr):增加或删除指定的handler

    Logger.debug()、Logger.info()、Logger.warning()、Logger.error()、Logger.critical():可以设置的日志级别

    示例:simple_logging_module.py

    复制代码代码如下:

    import logging

    # create logger

    logger = logging.getLogger("simple_example")

    logger.setLevel(logging.DEBUG)

    # create console handler and set level to debug

    ch = logging.StreamHandler()

    ch.setLevel(logging.DEBUG)

    # create formatter

    formatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s")

    # add formatter to ch

    ch.setFormatter(formatter)

    # add ch to logger

    logger.addHandler(ch)

    # "application" code

    logger.debug("debug message")

    logger.info("info message")

    logger.warn("warn message")

    logger.error("error message")

    logger.critical("critical message")

    输出:

    复制代码代码如下:

    $ python simple_logging_module.py

    2005-03-19 15:10:26,618 - simple_example - DEBUG - debug message

    2005-03-19 15:10:26,620 - simple_example - INFO - info message

    2005-03-19 15:10:26,695 - simple_example - WARNING - warn message

    2005-03-19 15:10:26,697 - simple_example - ERROR - error message

    2005-03-19 15:10:26,773 - simple_example - CRITICAL - critical message

    Handlers

    handler对象负责发送相关的信息到指定目的地。可以通过addHandler()方法添加多个多handler

    Handler.setLevel(lel):指定被处理的信息级别,低于lel级别的信息将被忽略

    Handler.setFormatter():给这个handler选择一个格式

    Handler.addFilter(filt)、Handler.removeFilter(filt):新增或删除一个filter对象

    Formatters

    Formatter对象设置日志信息最后的规则、结构和内容,默认的时间格式为%Y-%m-%d %H:%M:%S,下面是Formatter常用的一些信息

    %(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

    字符串形式的当前时间,

电脑资料

Python logging模块学习笔记》(https://www.unjs.com)。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒

    %(thread)d

    线程ID。可能没有

    %(threadName)s

    线程名。可能没有

    %(process)d

    进程ID。可能没有

    %(message)s

    用户输出的消息

    最后来个完整例子:

    复制代码代码如下:

    import logging

    # set up logging to file - see previous section for more details

    logging.basicConfig(level=logging.DEBUG,

    format='%(asctime)s %(name)-12s %(levelname)-8s %(message)s',

    datefmt='%m-%d %H:%M',

    filename='/temp/myapp.log',

    filemode='w')

    # define a Handler which writes INFO messages or higher to the sys.stderr

    console = logging.StreamHandler()

    console.setLevel(logging.INFO)

    # set a format which is simpler for console use

    formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s')

    # tell the handler to use this format

    console.setFormatter(formatter)

    # add the handler to the root logger

    logging.getLogger('').addHandler(console)

    # Now, we can log to the root logger, or any other logger. First the root...

    logging.info('Jackdaws love my big sphinx of quartz.')

    # Now, define a couple of other loggers which might represent areas in your

    # application:

    logger1 = logging.getLogger('myapp.area1')

    logger2 = logging.getLogger('myapp.area2')

    logger1.debug('Quick zephyrs blow, vexing daft Jim.')

    logger1.info('How quickly daft jumping zebras vex.')

    logger2.warning('Jail zesty vixen who grabbed pay from quack.')

    logger2.error('The five boxing wizards jump quickly.')

    运行后,在终端看到的结果

    复制代码代码如下:

    root       : INFO    Jackdaws love my big sphinx of quartz.

    myapp.area1 : INFO    How quickly daft jumping zebras vex.

    myapp.area2 : WARNING Jail zesty vixen who grabbed pay from quack.

    myapp.area2 : ERROR   The five boxing wizards jump quickly.

    在日志文件中的结果

    复制代码代码如下:

    10-22 22:19 root        INFO    Jackdaws love my big sphinx of quartz.

    10-22 22:19 myapp.area1 DEBUG   Quick zephyrs blow, vexing daft Jim.

    10-22 22:19 myapp.area1 INFO    How quickly daft jumping zebras vex.

    10-22 22:19 myapp.area2 WARNING Jail zesty vixen who grabbed pay from quack.

    10-22 22:19 myapp.area2 ERROR   The five boxing wizards jump quickly.

    发现DEBUG信息只有在文件中出现,这是因为StreamHandler中setLevel是INFO,可以看出Logger.setLevel()和handler.setLevel()的区别

    详细信息请参阅 http://docs.python.org/library/logging.html

   

您可能感兴趣的文章:

python中使用sys模板和logging模块获取行号和函数名的方法

python改变日志(logging)存放位置的示例

python标准日志模块logging的使用方法

    QQ空间 搜狐微博 人人网 开心网 百度搜藏更多

    Tags:Python logging

    复制链接收藏本文打印本文关闭本文返回首页

    上一篇:Python学习笔记之常用函数及说明

    下一篇:windows下wxPython开发环境安装与配置方法

   

相关文章

2014-03-03Python continue语句用法实例

2014-06-06Python程序设计入门(3)数组的使用

2013-12-12netbeans7安装python插件的方法图解

2012-05-05Python使用Socket(Https)Post登录百度的实现代码

2008-09-09Python 深入理解yield

2008-12-12下载糗事百科的内容_python版

2014-04-04python处理圆角图片、圆形图片的例子

2009-11-11python 快速排序代码

2014-04-04Python实现的简单万年历例子分享

2013-10-10python中 ? : 三元表达式的使用介绍

   

文章评论

   

最 近 更 新

   

python解析模块(ConfigParser)使用方法

python网络编程学习笔记(五):socket的一

Python自动化测试工具Splinter简介和使用

python 实现文件的递归拷贝实现代码

Python高效编程技巧

python实现dnspod自动更新dns解析的方法

python encode和decode的妙用

Python translator使用实例

Python isinstance判断对象类型

python抓取豆瓣图片并自动保存示例学习

   

热 点 排 行

   

Python入门教程 超详细1小时学会

python 中文乱码问题深入分析

比较详细Python正则表达式操作指

Python字符串的encode与decode研

Python open读写文件实现脚本

Python enumerate遍历数组示例应

Python 深入理解yield

Python+Django在windows下的开发

python 文件和路径操作函数小结

python 字符串split的用法分享

最新文章