• python常用模块——logger模块


    python的logging模块提供了通用的日志系统,熟练使用logging模块可以方便开发者开发第三方模块或者是自己的python应用。

    python使用logging模块记录日志涉及四个主要的类:

    logger:提供了应用程序可以直接使用的接口;

    handler:将(logger创建的)日志记录发送到合适的目的地。

    filter:提供一种优雅地方式决定一个日志记录是否发送到handler。

    formatter:指定日志记录输出的具体格式。formatter的构造方法需要两个参数:消息的格式字符串和日期字符串,这两个参数都是可选的。

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

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

    日志打印有5中模式:

    logging.debug():调试模式,不是必须出现,但是如果有问题需要借助它的信息。

    logging.info():信息模式,必须出现但是对程序的正常运行没有影响。

    logging.warning():警告模式,不会造成程序的错误,但可能会出问题的时候打印。

    logging.erroe():错误模式,程序出错了。

    loggingcirtical():批判模式,程序崩溃了。

    每个程序在输出信息之前都要获得一个Logger,Logger通常对应了程序的模块名。

    LOG = logging.getLogger("chat.gui")

    而核心模块可以这样:

    LOG = logging.getLogger("chat.kernel")

    Logger.setLevel(lel):指定最低的日志级别,低于lel的级别将会被忽略。debug是最低的内置级别,critical为最高。

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

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

    不同模式的运行级别:

    >>> import logging
    >>> logging.NOTSET
    0
    >>> logging.DEBUG
    10
    >>> logging.INFO
    20
    >>> logging.WARNING
    30
    >>> logging.ERROR
    40
    >>> logging.CRITICAL
    50

    NOTSET < DEBUG < INFO < WARNING < ERROR < CRITICAL

    如果把looger的级别设置为INFO,那么小于INFO级别的日志不输出,大于等于INFO级别的日志都输出。

    handler对象负责发送相关的信息到指定目的地。python的日志系统有多种Handler可以使用。有些Handler可以把信息输出到控制台,有些logger可以把信息输出到文件,还有些Handler可以把信息发送到网上,如果觉得不够用,还可以编写自己的Handler可以通过addHandler()方式添加多个handler

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

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

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

    每个Logger可以附加多个Handler,下面是几个常见的:

    (1)logging.StreamHander:屏幕流对象

    (2)logging.Filehandler:用于向一个文件输出日志信息

     

    Formatters

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

    import logging
    LOG=logging.getLogger()    #获取一个实例
    sh = logging.StreamHandler()    #得到一个屏幕流发送台
    
    LOG.addHandler(sh)   #作用台关联到实例
    
    LOG.warning('logger warning message')#调用实例答应信息
    LOG.error('logger error message')
    
    #没有格式化,只有最原始的输出到屏幕

    结果:

    logger warning message   #输出到屏幕
    logger error message

    下面只单纯输出到文件:

    import logging
    LOG=logging.getLogger()    #获取一个实例
    
    console = logging.FileHandler('test.log')  #控制台
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    LOG.addHandler(console)   
    
    console.setFormatter(formatter)   #绑定格式
    LOG.warning('logger warning message')
    LOG.error('logger error message')

    结果:

    2017-11-23 20:46:49,396 - root - WARNING - logger warning message
    2017-11-23 20:46:49,396 - root - ERROR - logger error message

    综合实例:

    import logging
    
    logger = logging.getLogger()     #实例化一个logger对象
    # 创建一个handler,用于写入日志文件
    fh = logging.FileHandler('test.log')   #将相关信息发送到目的地
    
    # 再创建一个handler,用于输出到控制台
    ch = logging.StreamHandler()
    
    #指定文件,可以不指定 formatter
    = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') fh.setFormatter(formatter) #文件句柄 绑 格式, ch.setFormatter(formatter) logger.setLevel(logging.INFO) 设置文件的级别,默认VWARNING logger.addHandler(fh) #logger对象可以添加多个fh和ch对象(logger绑文件句柄) logger.addHandler(ch) logger.debug('logger debug message') #输出 logger.info('logger info message') logger.warning('logger warning message') logger.error('logger error message') logger.critical('logger critical message')
  • 相关阅读:
    表单:文本框默认提示信息(小例子)
    代码:jquery小效果—— 吸顶
    Day5:面向对象的定义(中)
    Day5:面向对象的定义(上)
    Day4:数组(扩展知识)
    Day4:数组
    Day3:JAVA方法的定义
    Day2:JAVA判断与运算(循环)
    Eclipse使用技巧
    (HTTP)状态码详解
  • 原文地址:https://www.cnblogs.com/yangmingxianshen/p/7886937.html
Copyright © 2020-2023  润新知