Django日志(二)

59 篇文章 ¥19.90 ¥99.00
本文详细介绍了Django日志中的Handler,包括内置Handler的使用,如StreamHandler、FileHandler和RotatingFileHandler。重点讲解了如何配置Handler的参数,如filename、mode、maxBytes和backupCount,以实现日志的自动切分和管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Handler

image-20221109142113019

Handler决定如何处理logger中的每条消息。它表示一个特定的日志行为,例如 将消息写入屏幕、文件或网络Socket

handler对应的是个字典,每一个键都是一个handler的名字,每个值又一个字典,描述了如何配置对应的handler实例

2.1、内置Handler

  • class(必需):处理程序类的名称
  • level(可选的):处理程序的级别
  • formatter(可选的):处理程序的格式化程序
  • filters(可选的):处理程序的过滤器的列表
     'handlers': {
        'console'
### Django 日志配置及使用方法 Django 提供了一个强大的日志框架,允许开发者记录应用程序中的事件以便于调试和监控。以下是关于如何配置和使用 Django日志功能的详细介绍。 #### 配置日志设置 在 Django 中,可以通过 `settings.py` 文件来配置日志系统。默认情况下,Django 已经集成了 Python 的标准库 `logging` 模块[^1]。下面是一个典型的日志配置示例: ```python LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'verbose': { 'format': '{levelname} {asctime} {module} {message}', 'style': '{', }, 'simple': { 'format': '{levelname} {message}', 'style': '{', }, }, 'handlers': { 'file': { 'level': 'DEBUG', 'class': 'logging.FileHandler', 'filename': 'debug.log', 'formatter': 'verbose' }, 'console': { 'level': 'INFO', 'class': 'logging.StreamHandler', 'formatter': 'simple' } }, 'loggers': { 'django': { 'handlers': ['file', 'console'], 'level': 'DEBUG', 'propagate': True, }, 'myapp': { 'handlers': ['file'], 'level': 'ERROR', 'propagate': False, } } } ``` 在这个例子中: - 定义了两种格式化器 (`verbose`, `simple`) 来控制日志消息的显示样式。 - 使用两个处理器 (`file`, `console`)日志分别写入文件和打印到终端。 - 设置了两个记录器 (`django`, `myapp`),其中 `django` 是全局的日志记录器,而 `myapp` 则针对特定的应用程序模块[^2]。 #### 创建自定义中间件用于日志记录 为了增强应用的功能并实现更详细的请求/响应跟踪,可以创建一个类似于引用描述中的日志中间件。以下是如何构建这样一个中间件的具体方式: ```python import logging import time try: # 支持 Django >= 1.10 版本 from django.utils.deprecation import MiddlewareMixin except ImportError: # 兼容 Django <= 1.9 版本 MiddlewareMixin = object # 初始化 logger 对象 logger = logging.getLogger(__name__) class LoggingMiddleware(MiddlewareMixin): def process_request(self, request): """处理每次 HTTP 请求前的操作""" request.start_time = time.time() def process_response(self, request, response): """处理每次 HTTP 响应后的操作""" execution_time = time.time() - getattr(request, 'start_time', time.time()) status_code = response.status_code method = request.method path = request.path log_message = f"{method} {path} Status:{status_code}, TimeTaken:{execution_time:.4f}s" if status_code >= 400: logger.error(log_message) else: logger.info(log_message) return response ``` 此代码片段展示了如何通过扩展 `MiddlewareMixin` 类来自定义中间件逻辑,并利用内置的日志工具捕获性能指标以及错误状态的信息[^3]。 #### 实际应用场景下的注意事项 当部署至生产环境时需特别注意调整日志级别以减少不必要的开销;同时也要考虑敏感数据保护措施以免泄露隐私信息给未经授权的人士访问[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟之编程

您的支持将成为我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值