django配置日志:配置日志文件

1、项目目录结构

2、在logs包中创建log_path.py文件

import os
LOG_DIR = os.path.dirname(os.path.abspath(__file__))

#获取到当前logs包所在路径

3、到setting文件夹中dev.py(开发版本的django配置文件)下

from logs.logs_path import LOG_DIR #获取log文件夹所在路径
#下面就是logging的配置
LOGGING = {
    'version': 1,  # 指明dictConnfig的版本,目前就只有一个版本,哈哈
    'disable_existing_loggers': False,  # 表示是否禁用所有的已经存在的日志配置
    'formatters': {  # 格式器
        'verbose': {  # 详细
            'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
        },
        'standard': {  # 标准
            'format': '[%(asctime)s] [%(levelname)s] %(message)s'
        },
    },
    # handlers:用来定义具体处理日志的方式,可以定义多种,"default"就是默认方式,"console"就是打印到控制台方式。file是写入到文件的方式,注意使用的class不同
    'handlers': { # 处理器,在这里定义了两个个处理器
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            # 'stream': 'ext://sys.stdout',   # 文件重定向的配置,将打印到控制台的信息都重定向出去 python manage.py runserver >> /home/aea/log/test.log
            'stream': open(os.path.join(LOG_DIR,'console.log'),'a'),  #虽然成功了,但是并没有将所有内容全部写入文件,目前还不清楚为什么
            'formatter': 'standard'   # 制定输出的格式,注意 在上面的formatters配置里面选择一个,否则会报错
        },
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': os.path.join(LOG_DIR,'jwt_comment.log'),  #这是将普通日志写入到日志文件中的方法,
            'formatter': 'standard'
        },
        'default': {
            'level':'DEBUG',
            'class':'logging.handlers.RotatingFileHandler',
            'filename': os.path.join(LOG_DIR,'all.log'),     #日志输出文件
            'maxBytes': 1024*1024*10,                  #文件大小
            'backupCount': 5,                         #备份份数
            'formatter':'standard',                   #使用哪种formatters日志格式
        },
        # 上面两种写入日志的方法是有区别的,前者是将控制台下输出的内容全部写入到文件中,这样做的好处就是我们在views代码中的所有print也会写在对应的位置
        # 第二种方法就是将系统内定的内容写入到文件,具体就是请求的地址、错误信息等,小伙伴也可以都使用一下然后查看两个文件的异同。
    },
    'loggers': {  # log记录器,配置之后就会对应的输出日志
        # django 表示就是django本身默认的控制台输出,就是原本在控制台里面输出的内容,在这里的handlers里的file表示写入到上面配置的file-/log/jwt_comment.log文件里面
        # 在这里的handlers里的console表示写入到上面配置的console-/log/console.log文件里面
        'django': {
            'handlers': ['console','file'],
            # 这里直接输出到控制台只是请求的路由等系统console,当使用重定向之后会把所有内容输出到log日志
            'level': 'DEBUG',
            'propagate': True,
        },
        'django.request ':{
            'handlers': ['console','file'],
            'level': 'WARNING',  # 配合上面的将警告log写入到另外一个文件
            'propagate': True,
        },
        'django.db.backends': {
            'handlers': ['file'], # 指定file handler处理器,表示只写入到文件
            'level':'DEBUG',
            'propagate': True,
        },
    },
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值