django的日志logging使用与解析

本文详细介绍Django项目中日志模块的高级配置方法,包括日志格式、等级设定、文件处理策略及邮件报警机制。通过实例展示了如何利用logging模块进行多渠道日志输出,确保应用程序稳定运行。

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

settings.py

import logging
import django.utils.log
import logging.handlers

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'formatters': {
        'standard': {
            'format': '%(asctime)s [%(threadName)s:%(thread)d] [%(name)s:%(lineno)d] [%(levelname)s]- %(message)s'
        },
    },
#formatters表示输出的形式,asctime是输出的时间,默认这是形式‘2003-07-08 16:49:45,896’(逗号后面的数字是时间的毫秒部分)。
#levelnam消息的文本日志记录级别('DEBUG', 'INFO', 'WARNING','ERROR', 'CRITICAL').
#name用于记录调用的记录器的名称。
#threadname线程名称(如果可用)threadd线程ID(如果可用)
#lineno发出日志记录调用的源行号(如果可用)
#disable_existing_loggers中的键如果设置为True(这是默认的)那么来自默认配置的所有记录器都将被禁用。禁用的记录器与已删除的不一样;记录器仍然存在,但将默默地丢弃任何记录到它的内容,甚至不会将条目传播到父记录器。

    'filters': {
    },
    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'class': 'django.utils.log.AdminEmailHandler',
            'include_html': True,
        },
        'default': {
            'level':'DEBUG',
            'class':'logging.handlers.RotatingFileHandler',
            'filename': os.path.join(os.path.dirname(__file__)+'/logs/','all.log'), #或者直接写路径:'c:\logs\all.log',
            'maxBytes': 1024*1024*5, # 5 MB
            'backupCount': 5,
            'formatter':'standard',
        },
        'console':{
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'standard'
        },
        'request_handler': {
            'level':'DEBUG',
            'class':'logging.handlers.RotatingFileHandler',
            'filename': os.path.join(os.path.dirname(__file__)+'/logs/','script.log'), #或者直接写路径:'filename':'c:\logs\request.log''
            'maxBytes': 1024*1024*5, # 5 MB
            'backupCount': 5,
            'formatter':'standard',
        },
        'scprits_handler': {
            'level':'DEBUG',
            'class':'logging.handlers.RotatingFileHandler',
            'filename': os.path.join(os.path.dirname(__file__)+'/logs/','script.log'), #或者直接写路径:'filename':'c:\logs\script.log'
            'maxBytes': 1024*1024*5, # 5 MB
            'backupCount': 5,
            'formatter':'standard',
        },
    },
    'loggers': {
        'django': {
            'handlers': ['default','console'],
            'level': 'DEBUG',
            'propagate': False
        },
        'XieYin.app':{
            'handlers': ['default','console'],
            'level': 'DEBUG',
            'propagate': True
        },
        'django.request': {
            'handlers': ['request_handler'],
            'level': 'DEBUG',
            'propagate': False
        },
        'scripts': { # 脚本专用日志
            'handlers': ['scprits_handler'],
            'level': 'INFO',
            'propagate': False
        },
    }
}

views.py

# import the logging library
import logging

# Get an instance of a logger
logger = logging.getLogger(__name__)
#logger = logging.getLogger(__name__) # 这里用__name__通用,自动检测
#记录器的名称通常是__name__包含记录器的python模块的名称。可以自己进行定义,但是一定要在安装了模块的包里

def my_view(request, arg1, arg):
    ...
    if bad_mojo:
        # Log an error message
        logger.error('Something went wrong!')

日志有几个级别,我这里是error

  • logger.debug()
  • logger.info()
  • logger.warning()
  • logger.error()
  • logger.critical()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值