Django开发中的日志输出的方法

区分不同的日志等级是我们在Django开发过程中最常用的日志输出方法。下面是使用Python logging模块进行日志输出的完整攻略,包括代码示例。

步骤1:在Django配置文件中配置logging模块

在settings.py文件中进行下列配置:

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'file': {
            'class': 'logging.handlers.RotatingFileHandler',
            'filename': BASE_DIR + "/logs/django.log",
            'maxBytes': 1024 * 1024 * 5,
            'backupCount': 5,
            'formatter': 'verbose'
        },
        'console': {
            'class': 'logging.StreamHandler',
            'formatter': 'verbose'
        },
    },
    'formatters': {
        'verbose': {
            'format': '[%(asctime)s] %(levelname)s [%(module)s %(process)d %(thread)d %(message)s]',
            'datefmt': '%Y-%m-%d %H:%M:%S'
        },
        'simple': {
            'format': '%(levelname)s %(message)s'
        },
    },
    'loggers': {
        'django': {
            'handlers': ['file', 'console'],
            'level': 'DEBUG',
        },
        'django.request': {
            'handlers': ['file', 'console'],
            'level': 'DEBUG',
            'propagate': True,
        },
        'myapp': {
            'handlers': ['file', 'console'],
            'level': 'DEBUG',
            'propagate': True,
        },
    }
}

该配置在Logging字典的各个部分,将使用哪几种级别日志输出写入了配置文件中。

步骤2:将logging模块作为实用工具使用于视图函数等代码中

在views.py文件(或其它需要进行日志输出的代码文件)中,将日志记录器作为实用工具使用:

import logging

logger = logging.getLogger('myapp')

def index(request):
    logger.debug('This is a debug message')
    logger.info('This is an information message')
    logger.warning('This is a warning message')
    logger.error('This is an error message')
    logger.critical('This is a critical message')
    context = {}
    return render(request, 'index.html', context)

使用Django日志记录器输出的示例:

logger.debug('This is a debug message')
logger.info('This is an information message')
logger.warning('This is a warning message')
logger.error('This is an error message')
logger.critical('This is a critical message')

以上两行代码将产生5个级别的日志输出,分别为DEBUG(调试)、INFO(信息)、WARNING(警告)、ERROR(错误)、CRITICAL(严重错误)。

步骤3:查看日志输出

Django的日志消息将会保存在日志文件中,如果我们将handlers配置的文件句柄为console,则同样会在控制台中输出日志消息。如果想查看日志消息,可以使用以下命令:

tail -f 路径/<appname>.log

例如,在Django应用名称为myapp的情况下,要查看myapp日志文件中的输出日志,请执行:

tail -f 路径/myapp.log

以上日志文件中将输出所有myapp应用中输出的日志消息。

示范效果:

以下是一个示例日志输出内容:

[2019-04-17 14:54:19] DEBUG [myapp.views 18304 123145591207680] This is a debug message
[2019-04-17 14:54:19] INFO [myapp.views 18304 123145591207680] This is an information message
[2019-04-17 14:54:19] WARNING [myapp.views 18304 123145591207680] This is a warning message
[2019-04-17 14:54:19] ERROR [myapp.views 18304 123145591207680] This is an error message
[2019-04-17 14:54:19] CRITICAL [myapp.views 18304 123145591207680] This is a critical message

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django开发中的日志输出的方法 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • Django加载配置的过程详解

    下面我将为你详细讲解Django加载配置的过程,并提供两个示例说明。 一、Django加载配置的过程 Django加载配置的过程分为以下几个步骤: 1. 执行manage.py 当我们执行python manage.py时,Django会加载manage.py文件,并进入django.core.management.execute_from_command_…

    Django 2023年5月16日
    00
  • django常用模块汇总

      目录 django常用模块汇总 django常用模块汇总 from django.conf import settings # Django配置文件,自己django项目有配置就用自己的,没有就用系统默认配置。 from django import forms # form组件 class MyForm(forms.Form) from django.f…

    Django 2023年4月11日
    00
  • django 从零开始 11 根据时间戳加密数据

      django自带一个加密的方法signer,对数据进行一个加密 一般这种方式用于账号密码邮箱找回,或者token设置       class TimestampSigner(Signer): def timestamp(self): return baseconv.base62.encode(int(time.time())) def sign(self…

    Django 2023年4月11日
    00
  • Python 学习笔记13:Python + wsgi + django 配置。坑爹的python3和wsgi不兼容的解决

    今人不见古时月,今月曾经照古人。生命是如此的美丽与短暂! 学习Python已经两个月了,Python的语法通过做简单的语法题和看Python语法介绍,有了初步的了解。但上班还是要做别的事情,所以感觉学起来特别慢。有一种时不我待的感觉。   基本的语法了解了,接下来就要尽快进入到项目的实战。这样才能快速的遇到问题,并解决问题,迅速提升能力。 开始当然就是先按网…

    Django 2023年4月11日
    00
  • Django信号机制工作原理

    Django信号机制是一种用于在应用程序中处理一些特定事件的机制,例如在创建、更新、删除对象时执行某些操作。信号机制允许我们编写松散耦合的代码,这意味着我们可以在应用程序中更改某些行为而不必修改其他部分。 在Django中,信号机制由Signals和Receivers组成。当一个信号发生时,所有注册了该信号的接收器都将被调用。接收器是一个Python函数,它…

    Django 2023年3月13日
    00
  • Django之单表查询,多表查询(正向、反向查询),聚合查询

    常用字段 AutoField int自增列,必须填入参数 primary_key=True。当model中如果没有自增列,则自动会创建一个列名为id的列。 IntegerField 一个整数类型,范围在 -2147483648 to 2147483647。(一般不用它来存手机号(位数也不够),直接用字符串存,) CharField 字符类型,必须提供max_…

    Django 2023年4月12日
    00
  • Django 创建/删除用户的示例代码

    下面是关于“Django 创建/删除用户的示例代码”的完整攻略,过程中将会包含两条示例说明。 创建用户 首先需要在Django项目的视图函数中导入用户模型:from django.contrib.auth.models import User 在视图函数中,使用以下代码创建一个新用户: python User.objects.create_user(user…

    Django 2023年5月16日
    00
  • Django使用多数据库的方法

    当我们开发一个大型应用程序时,通常需要使用多个数据库。 Django提供了非常简单的方法来处理多个数据库。在本文中,我们将讨论Django如何使用多个数据库。 1. 定义多个数据库 Django支持定义多个数据库,我们可以通过修改settings.py文件中的DATABASES设置来定义多个数据库。如下所示: DATABASES = { ‘default’:…

    Django 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部