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" } } }
