node.js - 如何为 node-mongodb-native 设置日志记录?

标签 node.js express node-mongodb-native

我正在尝试为 Node 的 native 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');
    });
});

最佳答案

复制如下:a copy of the answer to this question I posted on the node-mongodb-native google group

查看最新版本的代码(commit 0fd78b3278da8deac980cb876fcb2bf72eaafb79)后,日志记录似乎尚未真正实现。

首先是一些基本规则:如果您创建一个服务器配置对象( http://mongodb.github.io/node-mongodb-native/api-generated/server.html?highlight=server#Server )并在那里设置记录器对象,那就可以了。如果您创建 Db() 对象并在其选项中设置记录器,那么它将覆盖您设置其服务器配置的任何记录器。如果您创建 MongoClient() 对象,这相当于 new Db('test', serverOptions, options) ,因此您可以在 serverOptions 或 options 中设置记录器对象。我不会介绍 MongoClient.Connect 以及那里发生的事情,因为我不想查看这部分代码。

我只能在connection.js 中找到记录器对象的用法,其中显示您实际上需要一些附加属性才能使日志记录正常工作。 即第 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 属性。实际上我还没有对此进行测试,因为我在这里没有正确的设置,但从查看代码来看似乎是这样。

关于node.js - 如何为 node-mongodb-native 设置日志记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18336830/

相关文章:

node.js - 如何在 Express.js 布局中使用 partials?

angularjs - nodejs 表达并使用 https

node.js - 将缓存添加到 node.js MongoDB API?

node.js - Knex 与 Heroku Postgres 连接时出错?

node.js - 如何设置 GridFS 与 node-mongodb-native 驱动程序一起使用的前缀/集合?

node.js - node.js 中的最大请求长度

javascript - Angular2 路由与 Express 路由结合使用?

node.js - 使用来自 Mongo 集合的二进制数据作为图像源

node.js - Mongo 连接流在 NodeJS 应用程序中意外关闭

node.js - 当 NODE_ENV=production 时,Gulp 构建到 Docker 容器中