Django--log日志设置

本文介绍了Django的日志设置,包括在控制台中输出日志的详细步骤。当`DEBUG = True`时,日志默认输出到控制台,级别为INFO及以上;而`DEBUG = False`时,ERROR和CRITICAL级别的日志将通过AdminEmailHandler发送到指定邮件。日志级别从低到高为DEBUG, INFO, WARNING, ERROR, CRITICAL。可以通过设置`LOGGING['disable_existing_loggers']`来改变默认配置,并通过`DJANGO_LOG_LEVEL`环境变量控制日志级别。" 111694200,10295660,CDO:高效气象数据处理工具详解,"['数据处理', '气候数据', 'CDO工具', 'nc数据', '气象科学']

参考文献: https://blog.csdn.net/weixin_37590093/article/details/81536372

Loggers
Loggers中的logger是整个日志机制的入口,一个logger对应一种类型的日志。logger通过设定日志级别(level属性),来配置logger的触发条件。Python中定义了5种日志级别:
由低到高分别为:DEBUG -> INFO -> WARNING -> ERROR -> CRITICAL
 

settings中的配置

LOGGING = {
    "version": 1,
    "disable_existing_loggers": False,
    "formatters": {  # 日志格式定义
        "verbose": {
            "format": "%(levelname)s %(asctime)s %(pathname)s:%(lineno)s %(process)d %(thread)d %(message)s"
        },
        "simple": {
            "format": "%(levelname)s %(message)s"
        },
    },
    "filters": {
        'special': {
            '()': 'project.logging.SpecialFilter',
            'foo': 'bar',
        },
        'require_debug_true': {
            '()': 'django.utils.log.RequireDebugTrue',
        },
    },
    "handlers": {
        "console": {
            "level": "DEBUG",
            "filters": [],
            "class": "logging.StreamHandler",
            "formatter": "verbose"
        },
        "default": {
            "level": "INFO",
            "class": "logging.handlers.RotatingFileHandler",
            "filename": "/var/log/xiangmu/default.log",    # 日志存放路径
            "maxBytes": 1024*1024*5,  # 5MB
            "backupCount": 2,
            "formatter": "verbose",
        },
        "mail_admins": {
            "level": "ERROR",
            "class": "django.utils.log.AdminEmailHandler",
            "filters": [],
        },
    },
    "loggers": {
        "django": {
            "handlers": ["console"],
            "level": "INFO",
            "propagate": True,
        },
        "django.request": {
            "handlers": ["console"],
            "level": "ERROR",
            "propagate": False,  # 不让特定的logger传播到它的上级
        },
"""’django’是’django.request’的上级。这种层级关系的设计,使得低层次logger接收到的日志信息,也可以被上级logger收到。
实践中,我们可以定义一个顶级的logger,用来接收所有下级logger的日志信息。这种传播可以在每个logger基础上进行控制.
如果你不想让特定的logger传播到它的上级,可以关闭这个行为。通过设置'propagate': False,来实现。"""
        "xiangmu": {
            "handlers": ["console"],
            "level": "INFO",
            "filters": []
        },
        "app01": {
            "handlers": ["console", "default"],
            "level": "INFO",
            "filters": [],
            "propagate": True,
        },
        "app02": {
            "handlers": ["console"],
            "level": "INFO",
            "filters": [],
        },
        "app03": {
            "handlers": ["console"],
            "level": "INFO",
            "filters": [],
        }
    }
}

打印需要打印的日志:

# coding=utf-8
# -*- coding: utf-8 -*-

import logging


logger = logging.getLogger(__name__)


# 打印日志

logger.exception("unknown message type: %s", msg_type)
logger.exception("|---------异常触发的日志")

logger.error("sid error", exc_info=True)

logger.warning("xxx不存在")

logger.info("|------日志内容")


# 记录日志有5个对应的方法。
logger.debug()
logger.info()
logger.warning()
logger.error()
logger.critical()

# 此外,还有两种日志方法

logger.log()  # 手动记录一个日志,随便你想记录什么都行
logger.exception()  # 为了捕获某些异常,创建一个ERROR级别的日志

所有与日志有关的配置默认在LOGGING ={}中,distConfig格式。如果我们没有进行特别配置,Django会执行默认的日志配置。

默认配置

  •     DEBUG = True

    ‘django’这个logger以及其(除了django.server之外的)所有下级的INFO以上的日志,都会被StreamHandler处理(输出到console)

  •     DEBUG = Flase

    ‘django’这个logger以及其(除了django.server之外的)所有下级的ERROR和CRITICAL的日志,都会被AdminEmailHandler处理(发送至指定邮件)

如果我们不想使用默认的配置,可以将LOGGING中的'disable_existing_loggers'设置为True(默认也是True),这样一来,默认的配置就会被禁用。但是设置'disable_existing_loggers': True,必须要非常小心,因为可能产生一些令人意外的结果(官网这么说的,还没试过),所以比较建议的方法是'disable_existing_loggers': False,然后重写部分或者全部的默认logger。
 

在控制台中输出日志

这种方式在本地开发环境进行调试时比较有帮助,很直观,需要的时候马上就能看到输出,不必切换到文件或者查收邮件。不过在生产环境下最好不要输出到控制台。默认情况下,只有在DEBUG = True的时候才会将日志输出到控制台,而且只处理INFO以上级别的日志。默认情况下,这种日志并不会输出很多信息,如果你想看到操作数据库的细节,可以在logger的level中设置'level': os.getenv('DJANGO_LOG_LEVEL', 'DEBUG'),这样就可以了。不过这样产生的日志也有点太多了。
 

import os 
LOGGING = {
     'version': 1,
     'disable_existing_loggers': False,
     'handlers': {
        'console': {
             'class': 'logging.StreamHandler',
         }, 
     },
     'loggers': {
         'django': {
             'handlers': ['console'],
             'level': os.getenv('DJANGO_LOG_LEVEL', 'INFO'),
          }, 
     },
}

handlers中定义了两个handler:'console'和'mail_admins'。'console'配置'class': 'logging.StreamHandler',这个我们不用过多去说。重点看看'mail_admins',配置'class': 'django.utils.log.AdminEmailHandler',那么既然要配置为通过邮件发送日志,那么是不是有必要设置一下发送和接收的邮件呢?
邮箱的配置也在settings.py中:

# 邮件配置
EMAIL_HOST = 'smtp.maildomain.com'  # SMTP地址
EMAIL_PORT = 25  # SMTP端口
EMAIL_HOST_USER = 'sender@maildomain.com'  # 发送邮件的邮箱
EMAIL_HOST_PASSWORD = '******'  # 我的邮箱密码
EMAIL_SUBJECT_PREFIX = u'[prefix]'  # 为邮件Subject-line前缀,默认是'[django]'
EMAIL_USE_TLS = True  # 与SMTP服务器通信时,是否启动TLS链接(安全链接)。默认是false
# 管理员站点
SERVER_EMAIL = 'xinxinyu2011@163.com'  # The email address that error messages come from, such as those sent to ADMINS and MANAGERS.
ADMINS = (('receiver', 'receiver@maildomain.com'),)  # 接收邮件的邮箱(或邮件组)


 

 

内容概要:本文研究了基于DPWMA调制与正负序分离的ANPC三电平并网逆变器前馈控制策略,旨在解决传统三电平逆变器存在的谐波含量高、电网不平衡工况适应性差及动态响应速度不足等问题。通过采用有源中点箝位(ANPC)三电平逆变器拓扑,结合双极性倍频脉宽调制(DPWMA)、正负序分离锁相技术和电网电压前馈控制,构建了一套一体化的高性能并网控制体系。该体系不仅优化了逆变器的开关动作机制,改善了输出电压电流的谐波特性,而且通过精确的相位同步和扰动补偿,显著提高了系统的动态响应能力和抗扰性能。仿真结果显示,所提出的控制策略能有效降低并网谐波含量,提升锁相精度与系统动态稳定性,确保在复杂电网工况下的高质量稳定并网。 适合人群:具备一定电力电子基础知识和仿真技能的研发人员,尤其是从事新能源发电、储能系统、柔性输电等领域研究的专业人士。 使用场景及目标:①研究和开发高性能并网逆变器,特别是针对大功率、高电能质量要求的应用场景;②探索如何通过先进的调制和控制策略来提高并网逆变器对电网扰动的适应性和响应速度;③为相关领域的学术研究和技术开发提供理论依据和实践指导。 阅读建议:建议读者结合实际的仿真软件(如MATLAB/Simulink)进行实践操作,以便更好地理解和掌握文中提到的各种控制策略的具体实现方法。同时,鼓励读者关注最新的研究成果和发展趋势,不断深化对该领域的认识。
摘要 在全球生态环境问题日益严峻、公众环保参与意愿持续提升的背景下,传统环保志愿者招募与管理模式存在信息传播零散、供需对接不畅、管理效率低下等痛点,制约了环保公益事业的规模化发展。为解决上述问题,响应生态保护数字化发展需求,本课题设计实现“守望自然”环保志愿者招募与管理网站,通过数字化手段打通环保组织与志愿者的服务链路,对推动环保公益规范化、高效化发展具有重要的现实意义与实践价值。 该网站采用B/S架构与前后端分离模式开发,前端基于Vue架构建组件化响应式界面;后端以Java为开发语言,采用Spring Boot框架搭建应用,搭配MyBatis作为持久层框架,数据库选用MySQL并遵循第三范式设计7个以上核心数据表。系统涵盖用户与管理员两大核心角色,实现了闭环式环保志愿服务功能:用户端支持注册登录、个人信息管理、活动查询报名、环保知识学习、社区互动、问题反馈及客服咨询等功能,满足用户全流程参与需求;管理员端具备用户管理、用户审核、招募与活动信息发布管理、环保知识内容管理、问题反馈处理、证书模板管理、多维度数据可视化分析及社区内容监管等功能,全面支撑环保组织运营管理。开发过程中集成了Token身份认证、MD5密码加密、ECharts数据可视化等关键技术,融入活动智能推荐、数据驱动决策等创新设计,确保系统功能完备性与实用性。 经功能测试、性能测试及安全测试验证,系统运行稳定可靠,具有良好的易用性、安全性和可扩展性,能够高效满足环保组织的用户招募管理需求与用户的多元化参与需求,有效降低环保组织运营成本,提升用户参与体验,为环保理念传播与公益事业发展提供有力的数字化支撑。 关键词:环保志愿者;招募管理系统;Spring Boot;Vue;数据可视化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值