---恢復內容開始---python
python中logging的使用
什麼是日誌:
日誌是一種能夠追蹤某些軟件運行時所發生事件的方法
軟件開發人員能夠向他們的代碼中調用日誌記錄相關的方法來代表發生了某些事情
一個事件能夠用一個可包含可選變量數據的消息來描述
此外,事件也有重要性的概念,這個重要性也能夠被稱爲嚴重性級別(level)
日誌的做用:
經過log的分析,能夠方便用戶瞭解系統或軟件、應用的運行狀況;
若是你的應用log足夠豐富,也能夠分析以往用戶的操做行爲、類型喜愛、地域分佈或其餘更多信息;
若是一個應用的log同時也分了多個級別,那麼能夠很輕易地分析獲得該應用的健康情況,及時發現問題並快速定位、解決問題,補救損失。
簡單來說就是
咱們經過記錄和分析日誌能夠了解一個系統或軟件程序運行狀況是否正常,
也能夠在應用程序出現故障時快速定位問題。
不只在開發中,在運維中日誌也很重要
日誌的做用能夠簡單總結爲如下幾點:
程序調試
瞭解軟件程序運行狀況,是否正常
軟件程序運行故障分析與問題定位
若是應用的日誌信息足夠詳細和豐富,還能夠用來作用戶行爲分析
使用日誌:
首先,咱們須要先了解下python中日誌的等級:
FATAL/CRITICAL = 重大的,危險的
ERROR = 錯誤
WARNING = 警告
INFO = 信息
DEBUG = 調試
NOTSET = 沒有設置
咱們須要配置本身的日誌,以往的開發經驗 ,開發應用程序或部署開發環境時,可使用 DEBUG 或 INFO 級別的日誌獲取儘量詳細的日誌信息來進行開發或部署調試;應用上線或部署生產環境時,應該使用 WARNING 或 ERROR 或 CRITICAL 級別的日誌來下降機器的I/O壓力和提升獲取錯誤日誌信息的效率。
那麼怎麼樣使用日誌記錄信息呢?
loggers 提供應用程序代碼直接使用的接口
handlers 用於將日誌記錄發送到指定的目的位置
filters 提供更細粒度的日誌過濾功能,用於決定哪些日誌記錄將會被輸出(其它的日誌記錄將會被忽略)
formatters 用於控制日誌信息的最終輸出格式
具體配置能夠參照如下代碼:flask
設置日誌的記錄等級
logging.basicConfig(level=logging.DEBUG) # 調試debug級
建立日誌記錄器,指明日誌保存的路徑、每一個日誌文件的最大大小、保存的日誌文件個數上限
file_log_handler = RotatingFileHandler("logs/log", maxBytes=10241024100, backupCount=10)
建立日誌記錄的格式 日誌等級 輸入日誌信息的文件名 行數 日誌信息
formatter = logging.Formatter('%(levelname)s %(filename)s:%(lineno)d %(message)s')
爲剛建立的日誌記錄器設置日誌記錄格式
file_log_handler.setFormatter(formatter)
爲全局的日誌工具對象(flask app使用的)添加日誌記錄器
logging.getLogger().addHandler(file_log_handler)
對日誌進行簡單的輸出: app
import logging運維
logging.debug("This is a debug log.")
logging.info("This is a info log.")
logging.warning("This is a warning log.")
logging.error("This is a error log.")
logging.critical("This is a critical log.")
或者能夠將以上的代碼進行簡單的修改工具
logging.log(logging.DEBUG, "This is a debug log.")
logging.log(logging.INFO, "This is a info log.")
logging.log(logging.WARNING, "This is a warning log.")
logging.log(logging.ERROR, "This is a error log.")
logging.log(logging.CRITICAL, "This is a critical log.")debug
最後咱們能夠修改 logging.basicConfig(level=logging.DEBUG)的日誌等級來控制日誌的輸出調試
---恢復內容結束---日誌
python中logging的使用設置日誌的記錄等級
logging.basicConfig(level=logging.DEBUG) # 調試debug級
建立日誌記錄器,指明日誌保存的路徑、每一個日誌文件的最大大小、保存的日誌文件個數上限
file_log_handler = RotatingFileHandler("logs/log", maxBytes=10241024100, backupCount=10)
建立日誌記錄的格式 日誌等級 輸入日誌信息的文件名 行數 日誌信息
formatter = logging.Formatter('%(levelname)s %(filename)s:%(lineno)d %(message)s')
爲剛建立的日誌記錄器設置日誌記錄格式
file_log_handler.setFormatter(formatter)
爲全局的日誌工具對象(flask app使用的)添加日誌記錄器
logging.getLogger().addHandler(file_log_handler)
對日誌進行簡單的輸出: orm
import logging對象
logging.debug("This is a debug log.")
logging.info("This is a info log.")
logging.warning("This is a warning log.")
logging.error("This is a error log.")
logging.critical("This is a critical log.")
或者能夠將以上的代碼進行簡單的修改
logging.log(logging.DEBUG, "This is a debug log.")
logging.log(logging.INFO, "This is a info log.")
logging.log(logging.WARNING, "This is a warning log.")
logging.log(logging.ERROR, "This is a error log.")
logging.log(logging.CRITICAL, "This is a critical log.")
最後咱們能夠修改 logging.basicConfig(level=logging.DEBUG)的日誌等級來控制日誌的輸出