我正在尝试为节点设置本机mongo驱动程序的日志记录。我已经设置了以下代码片段作为我正在尝试做的演示。不幸的是,控制台上没有发出任何东西。有什么想法吗?
var express = require('express') ;
var app = express();
var http = require('http');
var mongod = require('mongodb');
var server_conf = new mongod.Server('localhost', 27017, {auto_reconnect:true});
//dummy logger
var logger = {
error:function(message, object) {console.log('anything')},
log:function(message, object) {console.log('anything')},
debug:function(message, object) {console.log('anything')}}
var db_container = {db: new mongod.Db('test', server_conf,
{w:1,journal:true, native_parser:true, logger: logger})}
app.use(express.bodyParser());
app.use(app.router);
db_container.db.open(function(err, index_info){
if(err) throw err;
var testcol = db_container.db.collection('testcol');
app.get('/', function(request, res){
testcol.insert({hello:"moto"}, function(err,doc){
if(err){
throw err;
}
testcol.find({}).toArray(function(err,docs){
res.send(docs);
});
});
});
http.createServer(app).listen(3000, function () {
console.log('Express server listening on port ' + '3000');
});
});
答案 0 :(得分:2)
下面复制的是:a copy of the answer to this question I posted on the node-mongodb-native google group
在查看最新版本的代码(提交0fd78b3278da8deac980cb876fcb2bf72eaafb79)之后,看起来还没有真正实现日志记录。
首先是一些基本规则:如果你创建一个服务器配置对象(http://mongodb.github.io/node-mongodb-native/api-generated/server.html?highlight=server#Server)并在那里设置logger对象就可以了。如果您创建一个Db()对象并在其选项中设置一个记录器,那么它将覆盖您设置其服务器配置的任何记录器。如果您创建一个MongoClient()对象,这相当于新的Db('test',serverOptions,options),因此您可以在serverOptions或options中设置您的logger对象。我不打算介绍MongoClient.Connect以及那里发生的事情,因为我不在乎查看代码的那一部分。
我只能在connection.js中找到logger对象的用法,其中显示您实际上需要一些其他属性才能使日志记录正常工作。 即第69行
if(this.logger != null && this.logger.doDebug){
this.logger.debug("opened connection", this.socketOptions);
}
或第307行
if(self.logger != null && self.logger.doError) self.logger.error("parseError", errorObject);
在connection.js中还有许多doDebug / doError属性查找需要日志记录才能工作。从外观上看,记录的数量非常少,但是如果要启用它,则还需要在记录器上设置doError / doLog / doDebug属性。我实际上没有测试过这个,因为我没有在这里正确的设置,但从查看代码,这似乎是这种情况。