摘要:下面介紹一下開發中如何將日志輸出到文件中。錯誤,表示出現了某種錯誤。崩潰,出現了嚴重級別的錯誤。如果日志的信息級別比的低,那么就會忽略這條日志。還運行咱們在處理之前修改日志,例如降低或者提高日志的級別。
在生產環境中,將程序的運行日志輸出保存到文件中是很必要的操作;當應用崩潰時,很容易通過查找日志來定位問題。下面介紹一下django開發中如何將日志輸出到文件中。
首先看一下日志級別有哪些:
DEBUG:所有等級中最低,其信息一般用來作為調試的輔助信息 INFO:程序的一般信息 WARNING:警告,通常用來對某些可能出現的錯誤且不會影響程序正常運行的信息進行警告。 ERROR:錯誤,表示出現了某種錯誤。 CRITICAL:崩潰,出現了嚴重級別的錯誤。
在django項目中使用logging模塊打印日志的步驟如下:
1.導入模塊 import logging 2.設置日志等級 logging.basicConfig(level=logging.DEBUG) 3.獲取logger對象 logger = logging.getLogger(__name__) 4.打印日志 logger.debug("logger日志"),還有logger.info(),logger.warning()等方法
下面介紹一下logging中的四個組件,如下:
1.Loggers 2.Handlers 3.Filters 4.Formatters
Loggers(日志記錄器),系統中的每一條日志都是由該組件進行記錄的,每一個記錄器都應該有其自己的名稱并標記其最低記錄的等級;當一條日志給到logger時,logger會對該條信息的級別與自身的級別進行比較,如果該日志級別不低于本身級別,logger就會進行下一步操作。如果日志的信息級別比logger的低,那么就會忽略這條日志。
當logger經過級別的比較之后決定要對某條日志進行處理時,就將該條日志交給了Handlers
Handlers(處理器),用來處理具體每條信息,例如是將日志打印到屏幕還是記錄到文件或者發送至某個網絡連接;它自己的記錄級別,如果日志級別低于handler的級別,handler同樣會忽略掉該條日志。
Filter(過濾器):提供了傳遞給handler之前的附加功能。在通常情況下,一條日志信息只要達到logger的級別之后就會傳遞給handler處理,但是我們可以通過使用filter來對日志進行額外的過濾。
例如我們可以使用某個filter來控制只允許某個特定的源的ERROR級別的日志。
Filter還運行咱們在處理之前修改日志,例如降低或者提高日志的級別。
Filter可以在logger和handler中同時使用,而且多個filter會同時工作。
Formatter(格式化):定義了怎么顯示內容,因為最終的日志都會是以文本的形式展現,formatter就是描述怎么來做這件事。formatter通常都是使用python格式化字符串的方法來對日志進行格式化
最后看一個日志配置的例子:
logger.py: import os BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) BASE_LOG_DIR = os.path.join(BASE_DIR, "logs") LOGGING = { "version": 1, # 保留的參數,默認是1 "disable_existing_loggers": False, # 是否禁用已經存在的logger實例 # 日志輸出格式的定義 "formatters": { "standard": { # 標準的日志格式化 "format": "%(levelname)s %(asctime)s %(module)s %(message)s" }, "error": { # 錯誤日志輸出格式 "format": "%(levelname)s %(asctime)s %(pathname)s %(module)s %(message)s" }, "simple": { "format": "%(levelname)s %(asctime)s %(message)s" }, "collect": { "format": "%(message)s" } }, # 處理器:需要處理什么級別的日志及如何處理 "handlers": { # 將日志打印到終端 "console": { "level": "DEBUG", # 日志級別 "class": "logging.StreamHandler", # 使用什么類去處理日志流 "formatter": "simple" # 指定上面定義過的一種日志輸出格式 }, # 默認日志處理器 "default": { "level": "DEBUG", "class": "logging.handlers.RotatingFileHandler", # 保存到文件,自動切 "filename": os.path.join(BASE_LOG_DIR, "xx.log"), # 日志文件路徑 "maxBytes": 1024 * 1024 * 100, # 日志大小 100M "backupCount": 5, # 日志文件備份的數量 "formatter": "standard", # 日志輸出格式 "encoding": "utf-8", }, # 日志處理級別warn "warn": { "level": "WARN", "class": "logging.handlers.RotatingFileHandler", # 保存到文件,自動切 "filename": os.path.join(BASE_LOG_DIR, "warn.log"), # 日志文件路徑 "maxBytes": 1024 * 1024 * 100, # 日志大小 100M "backupCount": 5, # 日志文件備份的數量 "formatter": "standard", # 日志格式 "encoding": "utf-8", }, # 日志級別error "error": { "level": "ERROR", "class": "logging.handlers.RotatingFileHandler", # 保存到文件,自動切 "filename": os.path.join(BASE_LOG_DIR, "error.log"), # 日志文件路徑 "maxBytes": 1024 * 1024 * 100, # 日志大小 100M "backupCount": 5, "formatter": "error", # 日志格式 "encoding": "utf-8", }, }, "loggers": { # 默認的logger應用如下配置 "": { "handlers": ["default", "warn", "error"], "level": "DEBUG", "propagate": True, # 如果有父級的logger示例,表示不要向上傳遞日志流 }, "collect": { "handlers": ["console", "default", "warn", "error"], "level": "INFO", } }, }
在settings.py中導入logger.py中的配置即可:
from logger.py import LOGGING
以上就是log日志配置的介紹,歡迎交流!
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42496.html
摘要:默認的,及使用它的號數據庫此處使用號數據庫,在客戶端查看記得切換數據庫存儲在本機內存中,比數據庫的方式讀寫快很多默認的配置項,采用號庫。狀態保持的配置項,采用號庫。使用名為的配置項存儲數據。配置完成后運行程序,測試結果。 1.配置開發環境當進入虛擬環境,通過django_admin創建一個項目后,會在項目同名目錄生成一個setting.py文件。而實際項目過程中會有不同的環境,如開發環境、生...
摘要:默認的,及使用它的號數據庫此處使用號數據庫,在客戶端查看記得切換數據庫存儲在本機內存中,比數據庫的方式讀寫快很多默認的配置項,采用號庫。狀態保持的配置項,采用號庫。使用名為的配置項存儲數據。配置完成后運行程序,測試結果。 1.配置開發環境當進入虛擬環境,通過django_admin創建一個項目后,會在項目同名目錄生成一個setting.py文件。而實際項目過程中會有不同的環境,如開發環境、生...
摘要:每一條日志記錄也包含級別,代表對應消息的嚴重程度。即格式化器,主要功能是確定最終輸出的形式和內容。最好是日志能夠按自然天進行記錄和分割。 上一章學習了自動化測試,很好,現在我們可以絞盡腦汁寫出一份全面的測試,來保證代碼永遠健康了。 話雖如此,但是作為一個獨立開發者很難寫出真正全面的測試代碼。這是因為用戶在使用你的網站時可不會循規蹈矩,而是會以各種怪異的姿勢瀏覽網頁、上傳數據。但這也不是...
摘要:一監控所有的請求如何實現系統監控,自動發送錯誤日志的郵件呢只需配置配置文件即可。設置發送郵件配置信息郵件會發送到設定的郵件列表中。 showImg(https://segmentfault.com/img/remote/1460000015327475); 一、監控所有的request請求 如何實現系統監控,自動發送錯誤日志的郵件呢? 只需配置配置settings文件即可。 1.設置發...
閱讀 1309·2021-11-15 11:37
閱讀 2564·2021-09-22 10:56
閱讀 3391·2021-09-06 15:11
閱讀 801·2021-08-31 09:45
閱讀 2897·2021-07-28 11:16
閱讀 1806·2019-08-30 15:44
閱讀 477·2019-08-30 13:22
閱讀 3344·2019-08-30 13:18