import couchdb,datetime,os

'''
log doc:
{
    meta : {
        service : service name , #usually what come in plog.Logger(service name)
        timestamp : datetime.datetime.now(),
        pid : os.getpid(),
        title : __file__
    },
    level : ,
    msg :
}
'''

class Logger(object):
    def __init__(self,dburl,servicename):
        assert servicename
        self.servicename = servicename
        self.db = couchdb.client.Database(dburl)

    def log(self,level,msg):
        assert level
        assert msg
        return self.db.save({
            'meta' : {
                'service' : self.servicename,
                'timestamp' : str(datetime.datetime.now()),
                'pid' : os.getpid(),
                'title' : __file__
            },
            'level' : level,
            'msg' : msg
        })

    def debug(self,msg):
        return self.log('debug',msg)

    def info(self,msg):
        return self.log('info',msg)

    def warn(self,msg):
        return self.log('warning',msg)

    def error(self,msg):
        return self.log('error',msg)

if __name__ == '__main__':
    Logger('http://localhost:5984/test','test').log('test',{'itsa':"test"})

