Django的logging日志

logging模块为应用程序提供了灵活的手段记录事件、错误、警告和调试信息。通过日志我们可以分析到错误在什么地方,有什么异常。

一、logging概述

1.日志四个组件

a.loggers

用来配置用哪种handlers来处理日志。

b.filters

过滤loggers传递给handlers的信息,加一些处理控制

c.handlers

用来处理信息

d.formatters

格式化,配置打印日志格式,即将我们需要保存到日志文件中的信息统一格式化

2.日志记录错误等级:

CRITICAL>ERROR>WARNING>INFO>DEBUG

a.CRITICAL:重大错误
b.ERROR:系统里有错误
c.WARNING:警告
d.INFO:正常打印日志
e.DEBUG:调试信息

3.format日志消息格式

Django的logging日志_第1张图片
QQ图片20180503154235.jpg

4.记录器

记录器负责管理日志消息的默认行为,包括日志记录级别、输出目标位置、消息格式以及其它基本细节。

二、在django中实现日志功能

1.配置logging

在django中如何处理日志呢?django利用的是Python提供的logging模块,但django中要用logging,还得有一定的配置规则,需要在setting中设置。

a.配置路径,创建log文件夹
# 创建日志的路径
LOG_PATH = os.path.join(BASE_DIR, 'log')
# 如果地址不存在,则会自动创建log文件夹
if not os.path.isdir(LOG_PATH):
    os.mkdir(LOG_PATH)
b.配置四个组件
LOGGING = {
    # version 值只能为1
    'version': 1,
    # True 表示禁用loggers
    'disable_existing_loggers': False,

    # < 格式化 >
    'formatters': {
        # 可以设置多种格式,根据需要选择保存的格式
        'default': {
            'format': '%(levelname)s %(funcName)s %(module)s %(asctime)s %(message)s'
        },
        'simple': {
            'format': '%(levelname)s %(module)s %(asctime)s %(message)s'
        }
    },

    # < 处理信息 >
    'handlers':{
        'stu_handlers': {
            'level': 'DEBUG',
            # 指定日志文件大小,若超过指定的文件大小,会再生成一个新的日志文件保存日志信息
            'class': 'logging.handlers.RotatingFileHandler',
            # 指定文件大小
            # 1M=1024kb 1kb=1024b
            'maxBytes': 5 * 1024 * 1024,
            # 文件地址
            'filename': '%s/log.txt' % LOG_PATH,
            # 指定保存格式
            'formatter': 'default'
        },
        'uauth_handlers': {
            'level': 'DEBUG',
            # 若日志超过指定文件的大小,会再生成一个新的日志文件保存日志信息
            'class': 'logging.handlers.RotatingFileHandler',
            # 指定文件大小
            # 1M=1024kb 1kb=1024b
            'maxBytes': 5 * 1024 * 1024,
            # 文件地址
            'filename': '%s/uauth_log.txt' % LOG_PATH,
            # 指定保存格式
            'formatter': 'simple'
        }
    },


    'loggers': {
        'stu': {
            'handlers': ['stu_handlers'],
            'level': 'INFO'
        },
        'auth': {
            'handlers': ['uauth_handlers'],
            'level': 'INFO'
        }
    },

    'filters': {
        
    }
}

实例1

获取学生信息时,记录log。
生成指定格式日志文件的逻辑过程:
stu指定handler:stu_handlers
stu_handlers指定的保存文件filename:log.txt,保存格式formatter是default。

import logging

# 指定所用的logger
logger = logging.getLogger('stu')


def index(request):

    if request.method == 'GET':
        stus = Student.objects.all()
        logger.info('url:%s method:%s 获取学生信息成功'% (request.path, request.method))
        return render(request, 'index.html', {'stus': stus})

保存到日志中的信息:


image.png

信息中的 INFO 表示调用logger类时的级别。


image.png

你可能感兴趣的:(Django的logging日志)