Python日志处理程序用于MongoDB
项目描述
log4mongo-python是mongo数据库处理程序,用于Python日志,是log4mongo.org项目的一部分。log4mongo-python使用pymongo驱动程序 - http://github.com/mongodb/mongo-python-driver
需求
python 3.6.2+
pymongo 4.0+
mongo数据库
有关更多信息,请参阅debian_requirements.txt和requirements.txt文件。
配置
示例处理程序Python配置
import logging
from log4mongo.handlers import MongoHandler
logger = logging.getLogger('test')
logger.addHandler(MongoHandler(host='localhost'))
logger.warning('test')
上下文信息
您可以在文档中添加上下文信息。有两种方法。
1.) 方法
import logging
from log4mongo.handlers import MongoHandler
handler = MongoHandler(host='localhost')
logger = logging.getLogger('test')
logger.addHandler(handler)
logging.LoggerAdapter(logger, {'ip': '127.0.0.1'}).info('test')
2.) 方法
import logging
from log4mongo.handlers import MongoHandler
handler = MongoHandler(host='localhost')
logger = logging.getLogger('test')
logger.addHandler(handler)
logger.info('test', extra={'ip': '127.0.0.1'})
如您所见,第二种方法更为直接,无需使用LoggerAdapter。
固定大小集合
固定大小集合是固定大小的集合,支持基于插入顺序插入、检索和删除文档的高吞吐量操作。固定大小集合的工作方式类似于环形缓冲区:一旦集合填满分配的空间,它将通过覆盖集合中最旧的文档为新文档腾出空间。
在切换到限制集合之前,请阅读此文档:http://docs.mongodb.org/manual/core/capped-collections/
此行为默认禁用。您可以在构造函数中通过capped=True启用此行为
import logging
from log4mongo.handlers import MongoHandler
handler = MongoHandler(host='localhost', capped=True)
缓冲处理程序
BufferedMongoHandler是MongoHandler的子类,允许缓冲日志消息并一次性将它们写入数据库。目标是避免对数据库进行过多的写入,从而避免频繁的写锁。日志消息缓冲区刷新发生在缓冲区满时、发出关键日志消息时,以及定期进行。当发出关键消息时,可能会发生早期的缓冲区刷新。为了避免消息在显示在数据库之前无限期地留在缓冲队列中,每X秒进行一次定期的刷新。
您也可以通过设置buffer_periodical_flush_timing=False来禁用此定期刷新,从而避免创建定时器线程。
缓冲区大小可配置,以及早期刷新的日志级别(默认为logging.CRITICAL)
import logging
from log4mongo.handlers import BufferedMongoHandler
handler = BufferedMongoHandler(host='localhost', # All MongoHandler parameters are valid
capped=True,
buffer_size=100, # buffer size.
buffer_periodical_flush_timing=10.0, # periodical flush every 10 seconds
buffer_early_flush_level=logging.CRITICAL) # early flush level
logger = logging.getLogger().addHandler(handler)
测试
** 测试环境 **
Ubuntu 18.04
python >=3.6.4
pymongo >=3.9.0
mongod - db版本 4.0.13
pytest
运行测试
在运行测试之前,您必须启动mongo数据库。您可以通过此命令完成此操作
$ mongod --dbpath /tmp/
要运行测试,请执行以下命令
$ python3 setup.py test
请参阅vagrant文件以快速设置测试环境。
当前维护者
参考资料
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
构建分布
log4mongo-1.8.1.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 235562b27b42fe5d560ce5ace0d09dddb2fbea34b8df214d725b4724b9620b0d |
|
MD5 | 167b2d436e5a8ddf7438fb7eb5f10b10 |
|
BLAKE2b-256 | 9a208a3ea27dd3e5a2683744309fc976d11d5fabed23b708db7754d5233101de |