我想使用python将一些信息记录到MongoDB中。我发现了两个库mongodblog和log4mongo for python。任何想法哪一个更好?或者比这些更好的其他图书馆?从python登录到MongoDB
2
A
回答
6
当您使用MongoDB的日志记录,值得关注的是高写入吞吐量的锁争。尽管默认情况下MongoDB的插入是默认情况下的fire-and-forget样式,调用大量insert()会导致严重的写入锁争用。这可能会影响应用程序性能,并阻止读者聚合/筛选存储的日志。
的一个解决方案可能使用的日志收集器框架如Fluentd,Logstash,或Flume。这些守护进程应该在每个应用程序节点上启动,并从应用程序进程获取日志。
他们缓冲日志和异步写出来的数据到其他系统,如MongoDB的/ PostgreSQL的/等写入由批次完成的,所以这是一个很大比直接写更有效应用。该链接描述了如何将日志从Python程序放入Fluentd中。
下面是关于MongoDB的+ Fluentd一些教程。
3
1
无需使用日志库。使用pymongo并执行以下操作:
- 从应用程序数据库中创建不同的数据库(它可以在同一台机器上),以避免与高写入吞吐量问题霸占锁定您的应用程序的其他部分可能需要。
- 如果有一吨的日志记录的工作要做,考虑使用加盖收集
- ,如果你需要它时,写一个使用tailable光标另一个脚本进行分析日志:http://docs.mongodb.org/manual/tutorial/create-tailable-cursor/
结果是所有的日志需求都可以通过几行代码来处理。同样,当一些代码足够时,不需要通过引入额外的依赖关系来使代码库复杂化。
1
正如其他用户提到这里,它是直接使用pymongo登录很简单:
from pymongo import MongoClient
from pymongo import ASCENDING
import datetime
client = MongoClient()
db = client.my_logs
log_collection = db.log
log_collection.ensure_index([("timestamp", ASCENDING)])
def log(msg):
"""Log `msg` to MongoDB log"""
entry = {}
entry['timestamp'] = datetime.datetime.utcnow()
entry['msg'] = msg
log_collection.insert(entry)
log('Log messages like this')
您可能希望通过与时间戳更换_id
做实验,只记得_id
必须是唯一的。
相关问题
- 1. 从python登录到logstash
- 2. 从python登录到zwave
- 3. 登录到MongoDB集合(Ruby)
- 4. 从python脚本登录到Launchpad
- 5. 从Python服务登录到Windows?
- 6. Node.js,MongoDB登录表
- 7. 登录到使用Python
- 8. 用Python登录到Memrise
- 9. 在python中登录到Vk.com
- 10. python programm登录到网页
- 11. Python:登录到网站
- 12. 用Python登录到Javascript Phantomjs
- 13. 使用登录从Python下载 - Python
- 14. MongoDB和PHP简单登录
- 15. MongoDB通过IP登录?
- 16. 我为什么会遇到异常:尝试登录到mongodb时登录失败?
- 17. 登录Python?
- 18. Python Facebook登录
- 19. Python Hotmail登录
- 20. Python(Selenium):如何登录到登录重定向/组织登录网站
- 21. 从登录屏幕到`UITabBarController`
- 22. 从HTTP登录到HTTPS
- 23. 从ViewController登录到SplitViewController
- 24. 从winston登录到stackdriver
- 25. 从SharePoint登录到TextFile
- 26. 从something.com登录到application.something.com/clientApplicationPage/
- 27. 远程登录到从主
- 28. 从ASP.NET登录到CRM
- 29. 从HTTP登录到HTTPS?
- 30. 使用Python请求登录到使用jsf登录的问题
pymongo是python的mongodb驱动程序。它与记录无关。 – gsagrawal
我使用'raw'pymongo,这样做非常简单。我不认为你会从专用的python mongo日志库中获得很多好处。 – grizwako
什么是记录不同比写datalines某种数据存储?这里不需要使用花哨的框架。 Fluent却是一个非常好的建议。 – RickyA