MongoDB-Log:基于MongoDB的日志系统

2011-09-20 06:29

MongoDB-Log:基于MongoDB的日志系统

by nosqlfan

at 2011-09-19 22:29:39

original http://item.feedsky.com/~feedsky/nosqlfan/~8149226/560677710/6253001/1/item.html

MongoDB 的 Capped Collection是一个天生的日志系统,MongoDB自己的oplog就是用它来存储的,Capped Collection的特点是可以指定Collection的大小,当记录总大小超过设定大小后,老的数据会被自动抹掉用于存储新的内容。

本文介绍的是一个名叫mongodb-log的开源项目,它是一个基于MongoDB的Python日志系统。

使用它,首先你需要创建一个Capped Collection,当然,大小你可以自己设定。

> use mongolog
> db.createCollection('log', {capped:true, size:100000})

创建完成后通过 collection的 stats命令可以看到如下输出:

> db.log.stats()
{ "ns" : "mongolog.log", "count" : 0, "size" : 0, "storageSize" :
100096, "numExtents" : 1, "nindexes" : 0, "lastExtentSize" : 100096,
"paddingFactor" : 1, "flags" : 0, "totalIndexSize" : 0, "indexSizes" : {
}, "capped" : 1, "max" : 2147483647, "ok" : 1 }

然后你在你的Python程序里面就可以通过下面的方式记录日志了:

import logging
from mongolog.handlers import MongoHandler
log = logging.getLogger('demo')
log.setLevel(logging.DEBUG)
log.addHandler(MongoHandler.to(db='mongolog', collection='log'))
log.debug('Some message')

项目地址:github.com