3

以下のコードは、すべてのリクエストを2つのファイルに記録します。そのうちの1つはJSON形式です。これには、各リクエストをコンソールに2回ログに記録するという副作用があります。何故ですか?Winstonを誤って使用していると確信しています。フィードバックをいただければ幸いです。

var winston = require('winston');


winston.loggers.add('main_nojson', {
    file: {
        filename: '/home/stu/logs/winston_txt.log',
        json: false
    }
});

winston.loggers.add('main_json', {
    file: {
        filename: '/home/stu/logs/winston_json.log',
        json: true
    }
});

var winlog1 = winston.loggers.get('main_nojson');
var winlog2 = winston.loggers.get('main_json');

var winstonStream = {
    write: function(message, encoding){
        winlog1.info(message);
        winlog2.info(message);
    }
};

app.use(express.logger({stream:winstonStream,  format: ':remote-addr - [:date] ":method :url HTTP/:http-version" :status :res[content-length] ":referrer" ":user-agent" :response-time' }));
4

2 に答える 2

2

これを試して:

winston.loggers.add('main_json', {
    console: {
        silent: true
    },
    file: {
    filename: '/home/stu/logs/winston_json.log',
        json: true
    }
});

consolefileトランスポートの両方が、silent出力を抑制するオプションを取ります。ロガーの1つ(または両方)に追加すると、コンソール出力は抑制されますが、ファイル出力は保持されます。

于 2012-10-25T18:00:55.550 に答える