zoukankan      html  css  js  c++  java
  • python(6)-logging 日志模块

    logging的日志分为5个级别分别为debug(), info(), warning(), error(), critical()

    先来看一下简单的代码:

    logging.basicConfig(filename='example.log', level=logging.INFO, format='%(asctime)s %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
    logging.warning('is when this event was logged.')

    filename 是指日志文件的名称,可以带上路径,代码中是当前目录下的example.log文件;level是指info以上级别的日志,format就是格式化日志了:以‘日期时间  日志内容’的格式记录, datafmt就是格式化日志中的时间。

    logging.warnging() 是将一条warning日志写入日志, 打开example.log日志看一下:

    2016-03-02 12:17:41 is when this event was logged.
    2016-03-22 11:34:51 is when this event was logged.

    看到日志已经成功记录,而且格式都是指定的格式。

    而更多的时候,我们不只是将日志记录到文件这么简单,我们需要的是将日志记录到文件的同时输出到屏幕上:

    #创建logger
    logger = logging.getLogger("TEST-LOG")  #这里的TEST-lOG在后面会用到,这个是自定义的
    logger.setLevel(logging.DEBUG)          #全局的日志级别
    
    #创建屏幕输出
    ch = logging.StreamHandler()
    ch.setLevel(logging.DEBUG)              #屏幕输出的级别
    
    #创建文件处理和级别
    fh = logging.FileHandler("access.log")      #日志文件
    fh.setLevel(logging.WARNING)         #写入日志的级别
    
    #创建日志格式
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')   #name就是TEST-LOG
    
    #添加格式
    ch.setFormatter(formatter)
    fh.setFormatter(formatter)
    
    #添加ch, fh到logger
    logger.addHandler(ch)
    logger.addHandler(fh)
    
    #写入日志
    logger.debug("debug message")
    logger.info('info message')
    logger.warn('warn message')
    logger.error('error message')
    logger.critical('critical message')

    在上面代码中,有一个全局的日志级别,而屏幕和文件各自又定义了自己的日志级别,那是以哪个为准呢? 经过我的测试,我的理解是这样的:

    5个级别的日志debug, info, waring,error, criticcal, 级别越高就越严重,谁的级别高就按谁的来。

  • 相关阅读:
    android学习(2) 多线程的理解
    activity学习(1) 生命周期理解
    webkit.net使用方法日记
    微信小程序入门一
    ES入门笔一
    node八-核心模块、包
    require、缓存
    node七-required、缓存
    Node六-模块化
    Node笔记五-进程、线程
  • 原文地址:https://www.cnblogs.com/huangxm/p/5305690.html
Copyright © 2011-2022 走看看