当前位置:数据库 > DB2 >>

MongoDB做日志服务器

MongoDB做日志服务器
 
MongoDB 做日志服务器。
   www.zzzyk.com  
写日志最常用的方式是写入纯文本文件,然后安日期分割文件,压错旧文件。
 
这样的日志与对懂shell,perl语言的人分析起来非常方便,对于程序员来说还是更喜欢写入数据库服务器,然后通过sql语句查询。
对于程序员来说sql语句提供了丰富查询功能,相比文本文件分析更容易。
 
下面就是一个简单日志表, 尽量做到通用所以只有message。
 
 
Sql代码  
CREATE TABLE `logging` (  
    `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,  
    `tag` ENUM('unknow','user','bbs','cart','admin') NOT NULL DEFAULT 'unknow' COMMENT '日志标签域',  
    `asctime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '产生时间',  
    `facility` ENUM('unknow','account','bank','unionpay','sms','email','register') NOT NULL DEFAULT 'unknow' COMMENT '类别',  
    `priority` ENUM('info','warning','error','critical','exception','debug') NOT NULL DEFAULT 'debug' COMMENT '级别',  
    `message` VARCHAR(512) NOT NULL COMMENT '内容',  
    `operator` VARCHAR(50) NOT NULL DEFAULT 'computer' COMMENT '操作者',  
    PRIMARY KEY (`id`)  
)  
COMMENT='日志表'  
COLLATE='utf8_general_ci'  
ENGINE=InnoDB;  
   www.zzzyk.com  
 
mongodb 的message字段比起sql更灵活
 
Java代码  
db.logging.user.save({'asctime':'2012-10-10 12:12:12','facility':'register','priority':'info','operator':'computer','message':{'name':'neo','address':{'city':'shenzhen','post':518000},'phone':[13113668890,13322993040]}})  
db.logging.user.save({'asctime':'2012-10-10 12:12:12','facility':'sms','priority':'error','operator':'computer','message':'send sms: 13113668890,text: xxxxx'})  
  
db.logging.user.find()  
  
db.logging.admin.save({'asctime':'2012-10-10 12:12:12','facility':'account','priority':'info','operator':'computer','message':'delete account'})  
db.logging.admin.save({'asctime':'2012-10-10 12:12:12','facility':'sms','priority':'info','operator':'computer','message':'send sms'})  
db.logging.admin.save({'asctime':'2012-10-10 12:12:12','facility':'bank','priority':'warning','operator':'computer','message':'bank from xxxx to xxxx'})  
  
db.logging.admin.find()  
 
Java代码  
> db.logging.user.find()  
{ "_id" : ObjectId("50cc10dd3e4f5a2b92fb5f37"), "asctime" : "2012-10-10 12:12:12", "facility" : "register", "priority" : "info", "operator" : "computer", "message" : { "name" : "neo", "address" : { "city" : "shenzhen", "post" : 518000 }, "phone" : [ 13113668890, 13322993040 ] } }  
{ "_id" : ObjectId("50cc11a23e4f5a2b92fb5f39"), "asctime" : "2012-10-10 12:12:12", "facility" : "sms", "priority" : "error", "operator" : "computer", "message" : "send sms: 13113668890" }  
> db.logging.admin.find()  
{ "_id" : ObjectId("50cc11443e4f5a2b92fb5f38"), "asctime" : "2012-10-10 12:12:12", "facility" : "account", "priority" : "info", "operator" : "computer", "message" : "delete account" }  
{ "_id" : ObjectId("50cc120c3e4f5a2b92fb5f3a"), "asctime" : "2012-10-10 12:12:12", "facility" : "bank", "priority" : "warning", "operator" : "computer", "message" : "bank from xxxx to xxxx" }  
>  
Oracle
MySQL
Access
SQLServer
DB2
Excel
SQLite
SYBASE
Postgres
如果你遇到数据库难题:
请访问www.zzzyk.com 试试
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,