用于python日志记录的mongo数据库处理程序
log4mongo的Python项目详细描述
log4mongo python是用于python日志记录的mongo数据库处理程序,是log4mongo.org项目的一部分。 log4mongo python正在使用pymongo驱动程序-http://github.com/mongodb/mongo-python-driver
要求
- Python2.7+
- 皮蒙戈2.8+
- Mongo数据库
有关详细信息,请参阅debian_requirements.txt和requirements.txt文件。
配置
处理程序python配置示例:
importloggingfromlog4mongo.handlersimportMongoHandlerlogger=logging.getLogger('test')logger.addHandler(MongoHandler(host='localhost'))logger.warning('test')
上下文信息
可以用上下文信息装饰文档。有两种方法。
1.)方法
importloggingfromlog4mongo.handlersimportMongoHandlerhandler=MongoHandler(host='localhost')logger=logging.getLogger('test')logger.addHandler(handler)logging.LoggerAdapter(logger,{'ip':'127.0.0.1'}).info('test')
2.)方法
importloggingfromlog4mongo.handlersimportMongoHandlerhandler=MongoHandler(host='localhost')logger=logging.getLogger('test')logger.addHandler(handler)logger.info('test',extra={'ip':'127.0.0.1'})
如您所见,第二种方法更简单,不需要使用loggeradapter。
上限集合
capped集合是固定大小的集合,支持插入、检索和 并根据插入顺序删除文档。封顶集合的工作方式类似 循环缓冲区:一旦集合填满其分配的空间,就为新文档腾出空间 重写集合中最旧的文档。
在切换到带上限的集合之前,请阅读此文档:http://docs.mongodb.org/manual/core/capped-collections/
默认情况下禁用此行为。可以使用capped=true在构造函数中启用此行为:
importloggingfromlog4mongo.handlersimportMongoHandlerhandler=MongoHandler(host='localhost',capped=True)
缓冲处理程序
BufferedMongoHandler是MongoHandler的一个子类,允许缓冲日志消息 同时将它们全部写入数据库。目标是避免对数据库进行过多的写入,从而避免 写锁太频繁。 日志消息缓冲区刷新发生在缓冲区已满、发出关键日志消息以及周期性刷新时。 发出关键消息时,可能会发生早期缓冲区刷新。 为了避免消息在出现在数据库之前不确定地停留在缓冲队列中,一个周期性的 刷新每x秒发生一次。
此定期刷新也可以使用buffer_periodical_flush_timing=False停用,从而避免 要创建的计时器线程。
缓冲区大小是可配置的,以及早期刷新的日志级别(默认值为logging.CRITICAL):
importloggingfromlog4mongo.handlersimportBufferedMongoHandlerhandler=BufferedMongoHandler(host='localhost',# All MongoHandler parameters are validcapped=True,buffer_size=100,# buffer size.buffer_periodical_flush_timing=10.0,# periodical flush every 10 secondsbuffer_early_flush_level=logging.CRITICAL)# early flush levellogger=logging.getLogger().addHandler(handler)
测试
**在evnironment上测试**
- ubuntu 14.04
- Python>;2.7.4
- 皮蒙戈2.8.3
- Mongod-DB版本v3.0.2
- pytest
运行测试
在运行测试之前,必须启动mongo数据库。您可以通过以下命令执行此操作:
$ mongod --dbpath /tmp/
运行测试运行命令:
$ python setup.py test
请参阅vagrant文件以快速设置测试环境。