将Django Log消息存储在数据库中?

Ror*_*ory 15 django logging

Django(python web框架)使用python的日志记录系统来存储日志.

是否有一种简单的方法可以将日志消息存储在数据库中,然后允许管理员用户通过Web查看它们?这是我自己写的那种东西,但没有必要重新发明轮子.我不想记录异常,但是我已经添加到代码中的info/debug/notice类型消息.

理想情况下,我希望能够存储有关日志消息的元数据(如远程IP地址,用户代理,wsgi进程ID等),然后根据它进行过滤/浏览(即显示所有日志)过去24小时内来自此IP地址的消息).有没有人这样做过?

Chr*_*att 15

只需使用Sentry.Raven,功能的Django部分挂钩到日志框架,因此除了从您的应用程序收集错误之外,任何自定义日志消息也应该显示.

  • 虽然我喜欢哨兵等,但它没有回答这个问题.我对db logger处理程序感兴趣.任何人? (5认同)
  • 关于哨兵+乌鸦,不能说足够好的东西. (3认同)
  • 我一直在寻找同样的东西,但我发现 Sentry 并不能完全取代日志记录。请参阅 https://sentry.io/vs/logging/ “Sentry 不保证让您找到确切的历史错误。因此,重要的是,如果您确实需要能够跟踪事件,将它们维护在您现有的日志记录基础设施中。” (2认同)

Kha*_*tur 7

检查 django-db-logger

集成只需不到一分钟

https://github.com/CiCiUi/django-db-logger


Wto*_*wer 6

除了Sentry的显而易见的选择之外,为了锻炼,还有一篇很好的博客文章标题为" 创建自定义日志处理程序,在django中记录到数据库模型 ",在"James Lin博客"中简要介绍了如何使用第二个数据库,带有代码示例.

代码改编自标准Python RotatingFileHandler:

... RotatingFileHandler允许您指定要写入和旋转文件的文件,因此我的DBHandler还应允许您指定要插入的模型并在设置中指定过期,最重要的是,在独立应用程序上.

这也可以很容易地适用于使用单个数据库.