python -logging 模組
概述
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