用于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.txtrequirements.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)

缓冲处理程序

BufferedMongoHandlerMongoHandler的一个子类,允许缓冲日志消息 同时将它们全部写入数据库。目标是避免对数据库进行过多的写入,从而避免 写锁太频繁。 日志消息缓冲区刷新发生在缓冲区已满、发出关键日志消息以及周期性刷新时。 发出关键消息时,可能会发生早期缓冲区刷新。 为了避免消息在出现在数据库之前不确定地停留在缓冲队列中,一个周期性的 刷新每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文件以快速设置测试环境。

原作者

char0n(弗拉基米尔·戈雷)
网页:https://www.linkedin.com/in/vladimirgorej/

当前维修人员

奥兹纳胡姆提拉姆
电子邮件:nahumoz@gmail.com
web:oz123.github.io

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用Logback和Lombok   Java中的线程本地初始化?   java如何使用XPATH从XML中获取值   java如何从谷歌扳手的变异中获得合适的数据类型值?   java在完成autoIt执行后将控制权返回Selenium测试执行   java在Android Studio中添加新资源文件夹的正确方法?   java矩阵模板类   GetSharedReferences上的java Android SharedReferences NullPointerException   java意外的Maven依赖项中介行为   oop java:确保该类型只有一个实例   java我应该使用什么作为null的哈希代码?   http使用单个操作下载多个文件   java GetMappings在弹性搜索7中发生了变化。十、   java Swing:在generalpath上检测鼠标移动   无验证的java jsoup解析   twitter(安卓应用)中的java无效令牌访问格式   使用HttpServletRequest创建的JSESSIONID cookie的java设置路径。getSession(真)   阿里云Java捕获和提升事件中的错误处理   从节点调用java程序。js应用程序