django日志设置

# 首先了解一下日志的基础知识:

我们使用的是python自带的logging模块进行的。 

重点在于生成和处理日志消息。每条消息由一些文本和指示其严重性的相关级别组成。级别包含符号名称和数字值。

=>日志等级

级别描述
CRITICAL50关键错误/消息
ERROR40错误
WARNING30警告消息
INFO20通知消息
DEBUG10调试
NOTSET0无级别,只要是信息都会写入,这样日志将会很大,没必要

=> 内置处理器

    logging模块提供了一些处理器,可以通过各种方式处理日志消息。使用addHandler()方法将这些处理器添加给Logger对象。另外还可以为每个处理器配置它自己的筛选和级别。

    handlers.DatagramHandler(host,port):发送日志消息给位于制定host和port上的UDP服务器。

      handlers.FileHandler(filename):将日志消息写入文件filename。

      handlers.HTTPHandler(host, url):使用HTTP的GET或POST方法将日志消息上传到一台HTTP 服务器。

      handlers.RotatingFileHandler(filename):将日志消息写入文件filename。如果文件的大小超出maxBytes制定的值,那么它将被备份为filename1。

    由于内置处理器还有很多,如果想更深入了解。可以查看官方手册。

# 在django中的基础使用

首先在setting文件里面设置:

#导入模块
import logging
import django.utils.log
import logging.handlers


#logging_setting
# 为了将日志文件按天保存,
rq = time.strftime('%Y%m%d', time.localtime(time.time()))
# 日志文件路径
BASE_LOG_DIR = os.path.join(BASE_DIR, "logs")
# 日志logging的基础配置,分四步走,第一步格式化日志内容
LOGGING = {
    'version': 1,  # 保留字
    'disable_existing_loggers': False,  # 禁用已经存在的logger实例
    # 日志文件的格式
    'formatters': {
        # 详细的日志格式
        'standard': {
            'format': '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]''[%(levelname)s][%(message)s]'
        },
        # 简单的日志格式
        'simple': {
            'format': '[%(asctime)s][%(levelname)s][%(filename)s:%(lineno)d]%(message)s'
        },
    },
    # 第二步:过滤器
    'filters': {
    },
    # 第三步 自定义处理器
    'handlers': {
        # 日志等级CRITICAL > ERROR > WARNING > INFO > DEBUG
        'console': {
            'level': 'INFO',
            'class': 'logging.StreamHandler', #原生的sql语句会打印至日志,会导致文件很大。所以最好注释掉
            'stream' : 'ext://sys.stdout',
            # 文件重定向的配置,将打印到控制台的信息都重定向出去 python manage.py runserver >> /home/aea/log/test.log
             'formatter': 'standard'
             # 制定输出的格式,注意 在上面的formatters配置里面选择一个,否则会报错
             },
         'file': {
             'level': 'INFO',
             'class': 'logging.FileHandler',
             'filename': os.path.join(BASE_LOG_DIR, f"{rq}_info.log"),
             #这是将普通日志写入到日志文件中的方法,
              'formatter': 'standard' },

        # 默认的
        'default': {
            'level': 'INFO',
            'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件,自动切
            'filename': os.path.join(BASE_LOG_DIR, f"{rq}_info.log"),  # 日志文件
            'maxBytes': 1024 * 1024 * 50,  # 日志大小 50M
            'backupCount': 3,  # 最多备份几个
            'formatter': 'standard',
            'encoding': 'utf-8',
        },
        # 专门用来记错误日志
        'error': {
            'level': 'ERROR',
            'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件,自动切
            'filename': os.path.join(BASE_LOG_DIR, f"{rq}_err.log"),  # 日志文件
            'maxBytes': 1024 * 1024 * 50,  # 日志大小 50M
            'backupCount': 5,
            'formatter': 'standard',
            'encoding': 'utf-8',
        },
    },
  # 注册日志的处理器
    'loggers': {
        'django': {
            'handlers': ['console', 'file'],
            # 这里直接输出到控制台只是请求的路由等系统console,当使用重定向之后会把所有内容输出到log日志
            'level': 'INFO', 'propagate': True, },

        'django.request ': {
            'handlers': ['console', 'file'],
            'level': 'INFO',
             # 配合上面的将警告log写入到另外一个文件 'propagate': True,
            },
       # 默认的logger
        '': {
            'handlers': ['default', 'error'],
            'level': 'INFO',
            'propagate': True,  # 向不向更高级别的logger传递
        },
        'Server.web.views': {
            'handlers': ['default', 'error'],
            'level': 'INFO',
            'propagate': True
        },
    },
}

以上是基本设置,注册了这个之后,开起来就好了,自定义的时候只需要在目标页面创建一个logger 就好了。

自定义: logger = logging.getLogger('Server.web.views') 里面的是注册的然后使用就好了。

 

上面的level后面的必须是大写,否则会报错。无法识别的等级。

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值