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