31

我正在使用 winston 在 node.js 中添加日志详细信息,我使用以下过程添加日志

 var winston = require('winston');         
 winston.remove(winston.transports.Console);
 winston.add(winston.transports.Console, {'timestamp':true,'colorize':true);
 winston.log('info','jjjj');

我得到的输出是

2012-12-21T09:32:05.428Z - info: jjjj

我需要为 mytimestamp 指定格式,winston 中是否有任何规定,任何帮助将不胜感激

4

4 回答 4

50

时间戳选项可以是一个函数,它返回您希望将其保存为...

第 4 行:

winston.add(winston.transports.Console, {'timestamp':function() {return '111111111'; },'colorize':true});

来源:https ://github.com/flatiron/winston/pull/120

于 2012-12-21T12:21:42.990 回答
25

温斯顿@3 版本

winston.createLogger({
  format: winston.format.combine(
    winston.format.timestamp({format: 'YYYY-MM-DD HH:mm:ss'}),
    winston.format.prettyPrint()
  ),
  transports: [
    new winston.transports.Console()
  ]
})

要支持时区,您需要更改format为 winston 将调用的函数。

const timezoned = () => {
  return new Date().toLocaleString('en-US', {
    timeZone: 'Asia/Shanghai'
  });
};

const logger = createLogger({
  format: combine(
    timestamp({
      format: timezonedTime
    })
  ),
  transport: [
    new transports.Console(),
  ]
});
于 2018-07-27T08:11:40.680 回答
3

为了获得好的结果,您可以使用momentjs

const moment = require('moment');
...
...
timestamp: () => moment().format('YYYY-MM-DD hh:mm:ss')
于 2017-05-29T07:49:44.857 回答
2

要更改 winston 日志格式中的时间戳格式,我们可以将字符串或返回字符串作为参数的winston.format.timestamp(format)函数传递给带格式参数的函数。此外,我们可以使用 combine 函数自定义日志格式

 const LOG_FORMAT = WINSTON.format.combine(
    WINSTON.format.align(),
    WINSTON.format.timestamp({format:'DD-MM-YYYY T hh:mm:ss.sss A'}),
    
    WINSTON.format.printf(({ level, message, timestamp, label }) => {
        return `[ ${level.toUpperCase()} | ${timestamp} | LOG:${message} ]`;
    })
)
    const APP_LOGGER = WINSTON.createLogger({
    format: LOG_FORMAT,
    transports: [
        new WINSTON.transports.Console(),
        new WINSTON.transports.File({
            filename: './logs/app.log'
        })
    ]
})
于 2021-07-19T02:39:45.843 回答