git 应用django

django的日志系统

2018-05-12  本文已影响0人  裴general

摘要

日志在程序开发中是少不了的,通过日志我们可分析到错误在什么地方,有什么异常。在生产环境下有很大的用途。
django中使用python提供的logging模块,在django中要用logging,并且需要配置一定的规则。
这里有一篇文章总结得比较好:https://www.cnblogs.com/luohengstudy/p/6890395.html

1.logging模块

logging模块为应用程序提供了灵活的手段记录事件、错误、警告和调试信息。对这些信息可以进行收集、筛选、写入文件、发送给系统日志等操作,甚至还可以通过网络发送给远程计算机。

2.django中使用logging

# 创建日志的路径
LOG_PATH = os.path.join(BASE_DIR, 'log')
# 如果地址不存在,则自动创建log文件夹
if not os.path.join(LOG_PATH):
    os.mkdir(LOG_PATH)

(2)日志处理
version : 版本
disable_existing_loggers: 是否禁用loggger
formatters : 配置打印的日志格式
handlers:用来定义具体处理日志的方式,可以定义多种
loggers: 用来配置用那种handlers来处理日志,比如你同时需要输出日志到文件、控制台
filters: 用来对那些从 logger 传至 hadnler 的日志记录提供额外的控制

LOGGING = {
    # version只能为1,定义了配置文件的版本,当前版本号为1.0
    "version": 1,
    # True表示禁用logger
    "disable_existing_loggers": False,
    # 格式化
    'formatters': {
        'default': {
            'format': '%(levelno)s %(funcName) %(module)s %(asctime)s %(message)s '
        },
        'simple': {
            'format': '%(levelno)s %(module)s %(created)s %(message)s'
        }
    },

    'handlers': {
        'stu_handlers': {
            'level': 'DEBUG',
            # 日志文件指定为5M, 超过5m重新命名,然后写入新的日志文件
            'class': 'logging.handlers.RotatingFileHandler',
            # 指定文件大小
            'maxBytes': 5 * 1024,
            # 指定文件地址
            'filename': '%s/log.txt' % LOG_PATH,
            'formatter': 'default'
        },
        'uauth_handlers': {
            'level': 'DEBUG',
            # 日志文件指定为5M, 超过5m重新命名,然后写入新的日志文件
            'class': 'logging.handlers.RotatingFileHandler',
            # 指定文件大小
            'maxBytes': 5 * 1024 * 1024,
            # 指定文件地址
            'filename': '%s/uauth.txt' % LOG_PATH,
            'formatter': 'simple'
        }
    },
    'loggers': {
        'stu': {
            'handlers': ['stu_handlers'],
            'level': 'INFO'
        },
        'auth': {
            'handlers': ['uauth_handlers'],
            'level': 'INFO'
        }
    },

    'filters': {

        }
}
import logging
logger = logging.getLogger('stu')
def index(request):
    if request.method == 'GET':
        # 记录获取所有学生信息的日志
        stuinfos = StudentInfo.objects.all()
        logger.info('url: %s method: %s 获取学生信息成功' % (request.path, request.method))
        return render(request, 'index.html', {'stuinfos': stuinfos})
上一篇 下一篇

猜你喜欢

热点阅读