概述
logging 是python自带的日志模块,既可以输出到控制台,也可以输出到文件中。
用法
import logging
# 创建一个logger
logger = logging.getLogger('mylogger')
logger.setLevel(logging.DEBUG)
# 创建一个handler,用于写入日志文件
fh = logging.FileHandler('test.log')
fh.setLevel(logging.DEBUG)
# 再创建一个handler,用于输出到控制台
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
# 定义handler的输出格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
ch.setFormatter(formatter)
# 给logger添加handler
logger.addHandler(fh)
logger.addHandler(ch)
# 记录一条日志
logger.info('foorbar')
特色
python自带的日志模块,与多种框架完美融合,简单好用
踩坑记录
1,flask项目中 python manager.py db init
报错:
xxx\SAP\venv\lib\site-packages\flask_sqlalchemy\__init__.py:794: FSADeprecationWarning: SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and will be disabled by defau
lt in the future. Set it to True or False to suppress this warning.
'SQLALCHEMY_TRACK_MODIFICATIONS adds significant overhead and '
No handlers could be found for logger "root"
解决办法:
其实logging 模块有个自带的logger对象叫做root,而root和所有 子logger对象都是父子关系,root可以不配置handler就能使用,调用时候默认是sys.stderr
ch = logging.StreamHandler()
ch.setLevel(app.config['LOG_LEVEL'])
formatter = logging.Formatter(app.config['LOG_FORMAT'])
ch.setFormatter(formatter)
logging.root.addHandler(ch) # 把你创建的handler 加入root这个logger