1. 程式人生 > >python -logging 模組

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