logging
logging,python原生日志模块。
组成:logger,handler,formatter,filter
其它:level,logger:root,propagate属性
日志的作用:略。logging模块的使用方式也比较简单。关键:①日志重要程度区分;②日志需要记录的内容;
1.日志等级
- DEBUG
- INFO
- WARNING
- ERROR
- CRITICAL
- EMERGENCY
说明:1->6 等级是依次升高的,日志的信息量是依次减少的。
2.日志格式和内容
时间,位置,级别,内容
formatte的doc有格式配置的详细说明。
3.实现方式
- logging模块级别的函数:
- logging.basicConfig()进行logging的配置。执行过才有效
- logging.debug("这是一个debug!")
- getLogger对象:logger = logging.getLogger("logger") ; logger.debgu("这是一个debug!")
- 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