首页 > 技术文章 > python-logging

bonus_scene 2020-09-12 10:50 原文

logging

  logging,python原生日志模块。

  组成:logger,handler,formatter,filter

  其它:level,logger:root,propagate属性

  日志的作用:略。logging模块的使用方式也比较简单。关键:①日志重要程度区分;②日志需要记录的内容;

1.日志等级

  1. DEBUG
  2. INFO
  3. WARNING
  4. ERROR
  5. CRITICAL
  6. EMERGENCY

  说明:1->6 等级是依次升高的,日志的信息量是依次减少的。

2.日志格式和内容

  时间,位置,级别,内容

  formatte的doc有格式配置的详细说明。

3.实现方式

  1. logging模块级别的函数:
    1. logging.basicConfig()进行logging的配置。执行过才有效
    2. logging.debug("这是一个debug!")
  2. getLogger对象:logger = logging.getLogger("logger") ;  logger.debgu("这是一个debug!")
  3. logging.config.fileConfig():传入一个logConfig.ini文件解析并配置

 4.自定义logger

#! coding=utf-8
import logging
import sys


def setup_logger(level=logging.DEBUG):
    """配置logger"""
    # set formatter
    fmt = '%(asctime) %(levelname)s %(message)s'
    datefmt = '%Y-%m-%d %H:%M:%S'
    formatter = logging.Formatter(fmt=fmt, datefmt=datefmt)

    # set logger
    logger.propagate = False    # 关闭 "root.__name__" -> "root"
    logger.setLevel(level)

    # set handler
    fh = logging.FileHandler(Path.LOG_FILE, encoding='utf-8')
    sh = logging.StreamHandler(stream=sys.stderr)
    err_fh = logging.FileHandler(Path.ERR_LOG_FILE)
    err_fh.setLevel(logging.WARNING)
    handlers = (fh, sh, err_fh)

    # 配置
    for handler in handlers:
        handler.setFormatter(formatter)
        logger.addHandler(handler)


# global logger
logger = logging.getLogger(Path.PROJECT_NAME)
setup_logger()


if __name__ == '__main__':
  logger.debug('这是debug') # 输出到sh,fh
  logger.error('这是error') # 输出到sh,fh,err_fh

 

推荐阅读