Django日志配置详解:settings.py中的LOGGING参数与实战

周叙
周叙
发布时间:2026-10-13| 3人浏览过
原创

本文详解Django在settings.py中配置日志的方法,涵盖LOGGING字典的核心参数。内容涉及日志级别(DEBUG至CRITICAL)、Handler类型(如RotatingFileHandler、AdminEmailHandler)及日志格式字符串。通过views.py实例展示如何获取Logger并记录信息,帮助开发者实现有效的应用日志管理。

Django日志配置基础

在Django项目的settings.py文件中,可以通过配置LOGGING字典来启用日志功能。这是Django处理日志的核心入口,允许开发者自定义日志的行为和输出方式。

LOGGING字典结构解析


# logging配置
log_file = '/home/nagain/learn/log'
log_file_path = os.path.join(log_file, 'all.log')
if not os.path.exists(log_file):
 os.mkdir(log_file)
 os.mknod(log_file_path) # 创建空文件
 
LOGGING = {
 'version': 1,
 'disable_existing_loggers': True,
 'formatters': {
  # 日志格式
  'standard': {
   'format': '%(asctime)s [%(threadName)s:%(thread)d] [%(name)s:%(lineno)d] '
      '[%(module)s:%(funcName)s] [%(levelname)s]- %(message)s'
  }
 },
 'filter': {
 
 },
 'handlers': {
  'mail_admins': {
   'level': 'ERROR',
   'class': 'django.utils.log.AdminEmailHandler',
   'include_html': True,
  },
  'default': {
     'level': 'DEBUG',
     'class': 'logging.handlers.RotatingFileHandler',
     'filename': log_file_path,   # 日志输出文件
     'maxBytes': 1024*1024*5,     # 文件大小
     'backupCount': 5,       # 备份份数
     'formatter': 'standard',     #使用哪种formatters日志格式
  },
  'error': {
     'level': 'ERROR',
     'class': 'logging.handlers.RotatingFileHandler',
     'filename': log_file_path,
     'maxBytes': 1024*1024*5,
     'backupCount': 5,
     'formatter': 'standard',
    },
  'console': {
     'level': 'DEBUG',
     'class': 'logging.StreamHandler',
     'formatter': 'standard'
    },
  'request_handler': {
     'level': 'DEBUG',
     'class': 'logging.handlers.RotatingFileHandler',
     'filename': log_file_path,
     'maxBytes': 1024*1024*5,
     'backupCount': 5,
     'formatter': 'standard',
    },
  'scprits_handler': {
     'level': 'DEBUG',
     'class': 'logging.handlers.RotatingFileHandler',
     'filename': log_file_path,
     'maxBytes': 1024*1024*5,
     'backupCount': 5,
     'formatter': 'standard',
    }
 },
 'loggers': {
  'django': {
     'handlers': ['default', 'console'], # 来自上面定义的handlers内容
      'level': 'INFO',
     'propagate': False # 是否继承父类的log信息
  },
  'scripts': {
   'handlers': ['scprits_handler'],
   'level': 'INFO',
   'propagate': False
  },
  # sourceDns.webdns.views 应用的py文件
  'sourceDns.webdns.views': {
     'handlers': ['default', 'error'],
     'level': 'INFO',
     'propagate': True
  },
  'sourceDns.webdns.util': {
     'handlers': ['error'],
     'level': 'ERROR',
     'propagate': True
  },
  # 'django.request': {
  #    'handlers': ['mail_admins'],
  #    'level': 'ERROR',
  #    'propagate': False,
  #   },
 }
}

视图函数中的日志使用

在项目的视图函数views.py中,可以通过导入logging模块并获取特定的Logger实例来使用日志功能。以下是一个简单的视图函数示例,展示了如何记录日志信息并返回重定向响应。

Logger获取与日志记录实例


# 日志
import logging
logger = logging.getLogger('sourceDns.webdns.views') # 获取settings.py配置文件中logger名称
def index(request):
 a = reverse('index:article')
 logger.info(a)
 return HttpResponseRedirect(a)

日志级别设置

配置日志时,需要注意日志记录的级别(level)。Django支持多种日志级别,从低到高依次为DEBUG、INFO、WARNING、ERROR和CRITICAL。设置合适的级别可以过滤掉不必要的日志信息,只记录关键问题。

常见日志级别详解

级别 值 描述
CRITICAL 50 关键错误/消息
ERROR 40 错误
WARNING 30 警告消息
INFO 20 通知消息
DEBUG 10 调试
NOTSET 0 无级别

日志处理器配置

日志处理器(handler)负责决定日志消息的去向。Django提供了多种内置处理器,如将日志写入文件的FileHandler、发送错误邮件给管理员的AdminEmailHandler等。在settings.py中,需要为每个处理器指定级别和格式。

Handler关键字参数说明

关键字参数 描述
filename 将日志消息附加到指定文件名的文件
filemode 指定用于打开文件模式
format 用于生成日志消息的格式字符串
datefmt 用于输出日期和时间的格式字符串
level 设置记录器的级别
stream 提供打开的文件,用于把日志消息发送到文件。

日志格式定义

日志消息的格式(format)决定了日志输出的外观。通过定义formatters字典,可以指定日志中包含的时间、线程名、模块名、函数名、行号、日志级别和消息内容等详细信息。合理的格式有助于快速定位问题。

日志格式字符串变量列表

格式 描述
%(name)s 记录器的名称
%(levelno)s 数字形式的日志记录级别
%(levelname)s 日志记录级别的文本名称
%(filename)s 执行日志记录调用的源文件的文件名称
%(pathname)s 执行日志记录调用的源文件的路径名称
%(funcName)s 执行日志记录调用的函数名称
%(module)s 执行日志记录调用的模块名称
%(lineno)s

执行日志记录调用的行号

%(created)s 执行日志记录的时间
%(asctime)s 日期和时间
%(msecs)s 毫秒部分
%(thread)d 线程ID
%(threadName)s 线程名称
%(process)d 进程ID
%(message)s 记录的消息

内置处理器介绍

Django内置了一些常用的日志处理器,例如AdminEmailHandler用于发送错误邮件,RotatingFileHandler用于轮转日志文件。这些处理器可以通过配置LOGGING字典中的handlers部分添加到Logger对象中。

logging模块提供了多种处理器,可以通过addHandler()方法将这些处理器添加给Logger对象。此外,还可以为每个处理器配置自己的筛选器和日志级别,以实现更精细的日志控制。

常用Handler类型示例


handlers.DatagramHandler(host,port):发送日志消息给位于制定host和port上的UDP服务器。
 
handlers.FileHandler(filename):将日志消息写入文件filename。
 
handlers.HTTPHandler(host, url):使用HTTP的GET或POST方法将日志消息上传到一台HTTP 服务器。
 
handlers.RotatingFileHandler(filename):将日志消息写入文件filename。如果文件的大小超出maxBytes制定的值,那么它将被备份为filename1。

以上配置方法经过实际测试验证可行。如需了解更多细节,建议查阅Django官方文档,其中提供了关于日志配置的完整说明和最佳实践。

本文介绍了Django在settings.py中配置日志的方法,包括日志级别、处理器和格式的设置。希望这些内容能帮助开发者更好地管理Django应用的日志,如有其他问题欢迎参考官方文档或社区资源。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。