zoukankan      html  css  js  c++  java
  • Django的日志操作,记录一下自己的使用

    日志使用的流程:

    1.先要在settings.py 中加入日志的配置

    LOGGING = {
        'version': 1,
        'disable_existing_loggers': False,  # 是否禁用已经存在的日至实例(diango自带的报错),一般不禁用
        'formatters': {  # 定义输出日志的格式
            'standard': {  # 格式名字可以随意定义
                'format': '[%(levelname)s][%(asctime)s][%(filename)s][%(funcName)s][%(lineno)d] > %(message)s'  # 定义信息格式,自己随便定义,都有什么内容查看下边内容
            },
            'simple': {
                'format': '[%(levelname)s]> %(message)s'
            },
        },
        'filters': {
            'require_debug_true': {  # 只有在settings中的debug=True的时候才会生效
                '()': 'django.utils.log.RequireDebugTrue',  # 指定过滤器但是不知道是干什么的没研究明白
            },
        },
        'handlers': {  # 都叫这个为控制器,控制是什么样的记录方式等的一些参数
            'default': {
                'level': 'DEBUG',  # 日志级别
                'class': 'logging.handlers.RotatingFileHandler',  # 定义日志的切分格式,以及输出方式
                'filename': os.path.join(LOGS_DIR, 'django.log'),  # 日志文件,请确保修改'filename'路径为运行Django应用的用户有权限写入的一个位置
                'maxBytes': 1024 * 1024 * 5,  # 5 MB 文件大小
                'backupCount': 60,  # 备份份数
                'formatter': 'standard',  # 使用哪种日志格式
            },
            'console': {
                'level': 'DEBUG',
                'filters': ['require_debug_true'],
                'class': 'logging.StreamHandler', # 输出到控制台,这个类指定的不同输出方式不一样,下边是这个地方指定的类所需要的参数
                'formatter': 'simple'
            },
            'file': {
               'level': 'DEBUG',
               'class': 'logging.handlers.TimedRotatingFileHandler',
               # TimedRotatingFileHandler的参数, 其他博客上说这个类可以按照日期分割日志,但是我没试出来
               # 参照https://docs.python.org/3/library/logging.handlers.html#timedrotatingfilehandler
               # 目前设定每天一个日志文件
               'filename': os.path.join(LOGS_DIR, 'django.log'),
               'when': 'midnight',
               'interval': 1,
               'backupCount': 60,
               'formatter': 'standard'
              },
            # 'file_handler': {
            #      'level': 'INFO',
            #      'class': 'logging.handlers.TimedRotatingFileHandler',
            #      'filename': os.path.join(LOGS_DIR, 'django.log'),
            #      'formatter': 'standard'
            # },  # 用于文件输出
        },
        'loggers': {  # 都叫这个容器,配置上容器内使用什么控制器记录日志,后边实例化时getLogger内写的就是这个里面的某个容器名
            'django': {
                'handlers': ['default', 'console'],
                'level': 'DEBUG',
                'propagate': True,
            },
            'django.everyday': {
                'handlers': ['file', 'console'],
                'level': 'DEBUG',
                'propagate': True,
            },
            # 'django.request': {
            #     'handlers': ['mail_admins'],
            #     'level': 'ERROR',
            #     'propagate': False,
            # },
        }
    }

     上边提到的信息输出格式都有以下内容:

    格式 描述
    %(name)s 记录器的名称
    %(levelno)s 数字形式的日志记录级别
    %(levelname)s 日志记录级别的文本名称
    %(filename)s 执行日志记录调用的源文件的文件名称
    %(pathname)s 执行日志记录调用的源文件的路径名称
    %(funcName)s 执行日志记录调用的函数名称
    %(module)s 执行日志记录调用的模块名称
    %(lineno)s

    执行日志记录调用的行号

    %(created)s 执行日志记录的时间
    %(asctime)s 日期和时间
    %(msecs)s 毫秒部分
    %(thread)d 线程ID
    %(threadName)s 线程名称
    %(process)d 进程ID
    %(message)s 记录的消息

    2.去视图中实例化一个日志记录的对象

    logger = logging.getLogger("django.everyday")

    实例化时传入的参数应该是配置文件内loggers容器内声明好的容器

    3.实例化对象后在需要输出日志的地方写上输出语句

    logger.info(msg)
    logger.error(e)

    logger有不同的信息,调用不同方法写入不同的类型的信息

    一般info是正常信息,warning是警告信息,error是错误信息,常用的就这些

    注:

    如果想要django自动记录一些内容需要在loggers中配置上名字叫django的容器,这样django才会自动将规定等级以上的信息写入日志

  • 相关阅读:
    图像处理---平滑处理(柔化效果)
    图像处理---椒盐噪声(杂点效果)
    图像处理--曝光、霓虹(照亮边缘效果)
    图像处理---灰度处理(黑白效果)
    图像处理---染色
    javascript基础篇:表达式
    javascript基础篇:函数
    前端开发神器罗列
    杂谈篇:阅读优秀代码是提高开发人员修为的一种捷径
    杂谈篇:JavaScript开发规范要求
  • 原文地址:https://www.cnblogs.com/wangpanger/p/11396229.html
Copyright © 2011-2022 走看看