Javascript winston logger未序列化mongodb.ObjectID

Javascript winston logger未序列化mongodb.ObjectID,javascript,node.js,mongodb,mongoose,winston,Javascript,Node.js,Mongodb,Mongoose,Winston,我希望最终不再使用console.log作为日志系统,而是一直在研究winston和bunyan。我对winston有点偏爱,因为现在我希望在longentries中有人类可读的日志,而bunyan对所有额外字段都有点太健谈了 winston很棒,只是它没有正确序列化mongo数据库ID 如果我这样做: var ObjectId = require('mongodb').ObjectID; var winston = require('winston'); winston.info(new Ob

我希望最终不再使用console.log作为日志系统,而是一直在研究winston和bunyan。我对winston有点偏爱,因为现在我希望在longentries中有人类可读的日志,而bunyan对所有额外字段都有点太健谈了

winston很棒,只是它没有正确序列化mongo数据库ID

如果我这样做:

var ObjectId = require('mongodb').ObjectID;
var winston = require('winston');
winston.info(new ObjectId());
这就是写入标准输出的内容:

信息:_bsontype=ObjectID,id=Tø½þjÍrßgK

有时我只想将整个mongoose文档转储到日志中。我不想对所有对象ID调用.toString()


在winston中,有人能够解决这个问题吗?

您正在寻找的很可能是一个格式说明符

您可以这样做:

var ObjectId = require('mongodb').ObjectID;
var winston = require('winston');
winston.info(new ObjectId());
winston.info(“%j”,新ObjectId())


您可以在此处阅读有关格式说明符的内容

您正在寻找的很可能是格式说明符

您可以这样做:

var ObjectId = require('mongodb').ObjectID;
var winston = require('winston');
winston.info(new ObjectId());
winston.info(“%j”,新ObjectId())


您可以在这里阅读有关格式说明符的内容

最后,我将winston日志记录方法包装在一个函数中,该函数仅将节点格式实用程序与默认格式应用于所有参数。到目前为止,他一直在努力:

var util = require('util');
var winston = require('winston');


var fixWinstonParams = function (fn) {
    return function () {
        for (var i = 0; i < arguments.length; i++) {
            arguments[i] = util.format( arguments[i]);
        }
        return fn.apply(this, arguments);
    };
};


['info', 'error', 'debug', 'warn'].map(function(each){
    winston[each] = fixWinstonParams( winston[each])
});
var util=require('util');
var winston=require('winston');
var FIXWINSTONSPARAMS=函数(fn){
返回函数(){
for(var i=0;i
最后,我将winston日志记录方法包装在一个函数中,该函数只将默认格式的node format实用程序应用于所有参数。到目前为止,他一直在努力:

var util = require('util');
var winston = require('winston');


var fixWinstonParams = function (fn) {
    return function () {
        for (var i = 0; i < arguments.length; i++) {
            arguments[i] = util.format( arguments[i]);
        }
        return fn.apply(this, arguments);
    };
};


['info', 'error', 'debug', 'warn'].map(function(each){
    winston[each] = fixWinstonParams( winston[each])
});
var util=require('util');
var winston=require('winston');
var FIXWINSTONSPARAMS=函数(fn){
返回函数(){
for(var i=0;i