Django實戰-日誌
- 2019 年 10 月 4 日
- 筆記
Django網路應用開發的5項基礎核心技術包括模型(Model)的設計,URL 的設計與配置,View(視圖)的編寫,Template(模板)的設計和Form(表單)的使用。
Django使用python自帶的 logging 作為日誌列印工具。logging 是執行緒安全,其主要由4部分組成:
- Formatters
控制日誌的格式


- Filters
控制哪些日誌可以從 logger 流向 Handler

- Handlers
控制日誌輸出到哪裡,console,file…
一個 logger 可以有多個Handler

- Loggers
用戶使用的直接介面,將日誌傳遞給Handler

一、settings.py 配置
設置 log 文件,如果不存在就新建 log 文件夾
LOG_DIR = os.path.join(BASE_DIR, "log") if not os.path.exists(LOG_DIR): os.makedirs(LOG_DIR)
LOGGING = { # version為 1 ,定義了配置文件的版本,當前版本號為1.0 "version": 1.0, # 日誌格式 % s 字元串,格式器 "formatters": { # 詳細的日誌格式 "standard": { "format": "%(asctime)s [%(threadName)s: %(thread)d]" "%(pathname)s:%(funcName)s:%(lineno)d %(levelname)s - %(message)s" }, # 簡單的日誌格式 "simple": { "format": "%(asctime)s %(message)s" } }, "filters": { # 配置過濾器的名字 "test": { "()": "ops.TestFilter", } }, # 格式器 "handlers": { # 終端處理器 "console_handler": { "level": "INFO", "class": "logging.StreamHandler", "formatter": "standard" }, # 文件處理器 RotatingFileHandler 循環文件處理器 "file_handler": { "level": "DEBUG", "class": "logging.handlers.RotatingFileHandler", # 指定路徑的名字 "filename": os.path.join(LOG_DIR, "backend.log"), "maxBytes": 1024*1024*1024, # 保存的備份數量 "backupCount": 5, "formatter": "standard", "encoding": "utf8" }, # 統計,產生文件 "statistics_handler": { "level": "DEBUG", "class": "logging.handlers.RotatingFileHandler", # 指定路徑的名字 "filename": os.path.join(LOG_DIR, "statistics.log"), "maxBytes": 1024*1024*5, # 保存的備份數量 "backupCount": 5, "formatter": "simple", "encoding": "utf8" } }, "loggers": { # 日誌的名字 "django": { "handlers": ["console_handler", "file_handler"], "filters": ['test'], "level": "DEBUG" }, "statistics": { "handlers": ["statistics_handler"], "level": "DEBUG" } } }
