簡體   English   中英

Winston的字符串插值在Node.js中不起作用

[英]String interpolation with winston not working in Nodejs

當我嘗試使用Winston logger記錄日志時,無法在nodejs中正確看到ID和錯誤。

這是logger.js文件:

const path = require('path');
const winston = require('winston');

module.exports = function (app) {
  global.logger = new Logger(app.config.get('app').logLevel);
};

function Logger(logLevel='info') {
  return winston.createLogger({
    levels: {alert: 0, error: 1, warn: 2, info: 3, verbose: 4, debug: 5, silly: 6},
    level: logLevel,
    transports: [
      new (winston.transports.Console)({level: logLevel}),
      new (require('winston-daily-rotate-file'))({filename: path.resolve(__dirname + '/../../logs/app.log')})
    ]
  });
}

在Customer.js中,我嘗試這樣記錄:

logger.warn('Failed to update patient during user(%s) creation', userInstance.id, err);

這是我得到的輸出:

 {"_bsontype":"ObjectID","id":{"type":"Buffer","data":[93,0,225,203,227,175,68,1,61,50,162,194]},"level":"warn","message":"Failed to update patient during user(%s) creation"}

如果我錯了,請糾正我。

溫斯頓的文件

log方法使用util.format提供字符串插值。 必須使用format.splat()啟用它。

看來您需要在記錄器初始化期間指定它。 從同一鏈接:

const logger = createLogger({
  format: format.combine(
    format.splat(),
    format.simple()
  ),
  transports: [new transports.Console()]
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM