django中日志模块logging的配置和使用方式
作者:_BooI
文章主要介绍了如何在Django项目的`settings.py`文件中配置日志记录,并使用日志模块记录不同级别的日志,日志级别包括DEBUG、INFO、WARNING、ERROR和CRITICAL,级别越高,记录的日志越详细,通过配置和使用日志记录器,可以更好地排查和监控系统问题
一、文件的配置
settings.py文件中添加LOGGING块的配置,配置如下:
# 日志记录 LOGGING = { "version": 1, "disable_existing_loggers": False, # 用于确定在应用新的日志配置时是否禁用之前配置的日志器 # 格式器 "formatters": { "verbose": { # 输出日志级别名称、日志信息,以及生成日志信息的时间、进程、线程和模块。format格式化输出 "format": "{levelname} {asctime} {module} {process:d} {thread:d} {message}", "style": "{", }, "simple": { # 输出日志级别名称和日志信息。 "format": "{levelname} {message}", "style": "{", }, }, # 过滤器 "filters": { "require_debug_true": { "()": "django.utils.log.RequireDebugTrue", # 当DEBUG为True时,传递记录。 }, }, # 处理器 "handlers": { "console": { # 输出到终端 "level": "INFO", # 日志级别 "filters": ["require_debug_true"], # 使用的过滤器,上边已经定义 "class": "logging.StreamHandler", # 用于将日志消息发送到一个流,通常是一个输出流,比如控制台(标准输出) "formatter": "simple", # 格式器,上边有定义 }, "file": { # 输出到文件 "level": "INFO", # 日志级别 "class": "logging.handlers.RotatingFileHandler", # 将日志输出到一个文件中 "filename": os.path.join(BASE_DIR, 'logs/mall.log'), # 日志输出的文件, os.path.join用来拼接路径 "maxBytes": 300 * 1024 * 1024, # 一个文件300M "backupCount": 10, # 备份10个文件 "formatter": "verbose", # 格式器 }, }, "loggers": { # 日志器 "django": { # 创建的日志记录器 "handlers": ["console", 'file'], # 处理方式:在终端输出、输出到文件 "propagate": True, # 日志没有被处理,日志消息将向上传递给上级记录器 'level': 'INFO', # 日志输出最低级别,低于这个将不会输出 }, }, }
二、记录器的使用
1、导入日志模块
import logging
2、创建日志记录器
'django'在settings文件中已创建,可以自行创建
logger=logging.getLogger('django')
3、调用方法保存日志
logger.error("文件不存在") logger.info("正常访问") logger.warning('redis缓存空间不足') logger.debug("1111")
具体的代码
4、访问结果
只有级别大于等于INFO的日志记录才显示
终端中显示:
日志文件中显示
三、日志级别介绍
- DEBUG:排查故障时使用的低级别系统信息
- INFO:一般的系统信息
- WARNING:描述系统发生了一些小问题的信息
- ERROR:描述系统发生了大问题的信息
- CRITICAL:描述系统发生严重问题的信息
- 日志级别:CRITICAL > ERROR > WARNING > INFO > DEBUG, 只有当日志消息级别大于等于设置好的日志级别,日志消息才会被记录
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。