之前写商城项目的时候,采用的日志处理方式为在终端输出或者写入文件,这样的话,项目部署上线之后,若服务器出现错误,需要到服务器查看相关的错误日志,很不方便。后期在学习别人开源项目的时候,学习到一个开源的实时错误报告工具--sentry。用sentry来管理日志,我们可以使用sentry官网(https://sentry.io/)提供的云服务,只需要注册一个sentry账号,这样我们就可以到官网查看错误日志。首先安装扩展包 pip install raven

djangosettings里配置sentry

  1. INSTALLED_APPS = (
  2. 'raven.contrib.django.raven_compat',
  3. )
  1. RAVEN_CONFIG = {
  2. 'dsn': 此处填对应项目的dsn,
  3. # If you are using git, you can also automatically configure the
  4. # release based on the git info.
  5. # 'release': raven.fetch_git_sha(os.path.abspath(os.pardir)),
  6. }

日志的配置:

  1. LOGGING = {
  2. 'version': 1,
  3. 'disable_existing_loggers': True, # 是否禁用已经存在的日志器
  4. 'root': {
  5. 'level': 'WARNING',
  6. 'handlers': ['sentry'],
  7. },
  8. 'formatters': { # 显示日志的格式
  9. 'verbose': {
  10. 'format': '%(levelname)s %(asctime)s %(module)s '
  11. '%(process)d %(thread)d %(message)s'
  12. },
  13. },
  14. 'handlers': { # 日志处理的方法
  15. 'sentry': {
  16. 'level': 'ERROR', # To capture more than ERROR, change to WARNING, INFO, etc.
  17. 'class': 'raven.contrib.django.raven_compat.handlers.SentryHandler',
  18. 'tags': {'custom-tag': 'x'},
  19. },
  20. 'console': { # 在终端中输出
  21. 'level': 'DEBUG',
  22. 'class': 'logging.StreamHandler',
  23. 'formatter': 'verbose'
  24. },
        'file':{
           'level':'INFO',
           'class':'logging.handler.RotaingFileHandler',
           'filename':os.path.join(os.path.dirname(BASE_DIR),'logs'), # 日志文件位置
           'maxBytes':300*1024*1024,
           'backupCount':10,
           'formatter':'verbose',
         }
  25. },
  26. 'loggers': { # 日志器
  27. 'django': { # 日志器的名称
  28. 'level': 'ERROR',
  29. 'handlers': ['sentry', 'console', 'file'],
  30. 'propagate': True, # 是否继续传递日志信息
  31. },
  32. }

使用方法:

  1. import logging
  2. logger = logging.getLogger(__name__)
  3. logger.error('There was some crazy error', exc_info=True, extra={
  4. # Optionally pass a request and we'll grab any information we can
  5. 'request': request,
  6. })

注意,添加了request才能看到发生错误的地方的上下文。

当有错误产生,可以登录官网查看错误信息,同时也会给注册时填写的邮箱发送邮件提醒。

django商城项目之用sentry管理日志的更多相关文章

  1. Django商城项目笔记No.12用户部分-QQ登录2获取QQ用户openid

    Django商城项目笔记No.12用户部分-QQ登录2获取QQ用户openid 上一步获取QQ登录网址之后,测试登录之后本该跳转到这个界面 但是报错了: 新建oauth_callback.html & ...

  2. Django商城项目笔记No.3用户部分-用户模型类

    Django商城项目笔记No.3用户部分-用户模型类 Django提供了认证系统,文档资料https://yiyibooks.cn/xx/Django_1.11.6/topics/auth/index ...

  3. Django商城项目笔记No.2项目准备工作

    Django商城项目笔记No.2项目准备工作 接着上篇开始,创建好工程之后,随之而来的是怎么配置工程,这篇文章记录如何进行相关的配置 1.pycharm打开工程,进行相关的配置 通过pycharm打开 ...

  4. Django商城项目笔记No.11用户部分-QQ登录1获取QQ登录网址

    Django商城项目笔记No.11用户部分-QQ登录 QQ登录,亦即我们所说的第三方登录,是指用户可以不在本项目中输入密码,而直接通过第三方的验证,成功登录本项目. 若想实现QQ登录,需要成为QQ互联 ...

  5. Django商城项目笔记No.10用户部分-登录接口

    Django商城项目笔记No.10用户部分-登录接口 添加url路由 接下来第二步,增加返回内容: 增加结果如下: 配置:上边的方法定义了返回的内容都有哪些,那这个方法jwt还不知道,需要配置: 修改 ...

  6. Django商城项目笔记No.9用户部分-注册接口签发JWTtoken

    Django商城项目笔记No.9用户部分-注册接口签发JWTtoken 我们在验证完用户的身份后(检验用户名和密码),需要向用户签发JWT,在需要用到用户身份信息的时候,还需核验用户的JWT. 关于签 ...

  7. Django商城项目笔记No.8用户部分-注册接口实现

    Django商城项目笔记No.8用户部分-注册接口实现 users的view.py中增加如下代码 class RegisterUserView(CreateAPIView): "" ...

  8. Django商城项目笔记No.7用户部分-注册接口-判断用户名和手机号是否存在

    Django商城项目笔记No.7用户部分-注册接口-判断用户名和手机号是否存在 判断用户名是否存在 后端视图代码实现,在users/view.py里编写如下代码 class UsernameCount ...

  9. Django商城项目笔记No.6用户部分-注册接口-短信验证码实现celery异步

    Django商城项目笔记No.4用户部分-注册接口-短信验证码实现celery异步 接上一篇,如何解决前后端请求跨域问题? 首先想一下,为什么图片验证码请求的也是后端的api.meiduo.site: ...

随机推荐

  1. jquery 3.1 tets

    r.extend = r.fn.extend = function () { var a, b, c, d, e, f, g = arguments[0] || {}, h = 1, i = argu ...

  2. javaweb上传大文件的问题

    总结一下大文件分片上传和断点续传的问题.因为文件过大(比如1G以上),必须要考虑上传过程网络中断的情况.http的网络请求中本身就已经具备了分片上传功能,当传输的文件比较大时,http协议自动会将文件 ...

  3. JUnit——assertThat(acture,matcher)

    使用hamcrest之前需要引入相关的jar包,包括hamcrest-core.1.3.jar和hamcrest-library-1.3.jar. 具体引入的方法为:右击JUnit工程——build ...

  4. Quartz监听器

    1.概念Quartz的监听器用于当任务调度中你所关注事件发生时,能够及时获取这一事件的通知.类似于任务执行过程中的邮件.短信类的提醒.Quartz监听器主要有JobListener.TriggerLi ...

  5. Android 内存泄漏优化总结

    1,验证是否为汉字 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 3 ...

  6. 使用Jacoco获取 Java 程序的代码执行覆盖率

    Jacoco是Java Code Coverage的缩写,顾名思义,它是获取Java代码执行覆盖率的一个工具,通常用它来获取单元测试覆盖率.它通过分析Java字节码来得到代码执行覆盖率,因此它还可以分 ...

  7. linux 目录介绍

    /boot: 系统启动相关的文件,如内核.initrd,以及grub(bootloader)/dev: 设备文件 /etc:配置文件/home:用户的家目录,每一个用户的家目录通常默认为/home/U ...

  8. 六、RF中断言关键字使用详解

    1.should be equal  和should be not equal  :比较两个值相等或不相等 2.should start with  和should not start with :判 ...

  9. jest 事件测试

    概述 最近玩 Jest,测试 Vue 组件上的事件,有一些心得,记录下来供以后开发时参考,相信对其他人也有用. 事件测试 对于 Vue 组件上的事件,分为 2 种,一种是子组件 Emit 的事件,另一 ...

  10. MYSQL5.6源码包编译安装

    linux下用cmake编译安装mysql-5.6.35cmake编译安装mysql的方法:#useradd -M mysql -s /sbin/nologin#yum install -y cmak ...