使用winston仅记录消息

时间:2015-12-15 05:44:52

标签: node.js express winston

我在节点应用中使用winston logger,我想将自定义消息记录到日志文件中。

var logger = new winston.Logger({
    transports: [
        new winston.transports.File({
            level: 'info',
            filename: '/tmp/test.log',
            handleExceptions: true,
            json: true,
            maxsize: 20971520 //20MB
        })
    ],
    exitOnError: false
});

我只需要在日志中记录消息,我不需要在日志文件中记录级别和时间戳。当前记录的样本如下。

{"level":"info","message":"sample entry to log","timestamp":"2015-12-11T09:43:50.507Z"}

我的目的是在日志文件中输入

sample entry to log

如何实现这一目标?

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

在Winston 2.x上 如果只想打印邮件,则可以通过设置以下内容来实现:

json: false,
timestamp: false,
showLevel: false

完整记录器示例:

let logger = new Logger({
  transports: [
    new (transports.File)({
      name: 'info-file',
      filename: 'filelog-info.log',
      json: false,
      timestamp: false,
      showLevel: false
    })
  ],
  exitOnError: false
});
logger.log('info', 'eat my shorts');

进入filelog-info.log:eat my shorts

仅供参考:此处的过滤器和重写器无济于事

答案 2 :(得分:0)

如果有人像我一样找到了这个问题,希望仅发送express-winston日志消息(以我为例,发送到控制台)

这是我所做的:

const winston = require('winston');
const expressWinston = require('express-winston');
const { MESSAGE } = require('triple-beam');

expressWinston.logger({
    transports: [
        new winston.transports.Console({
            format: simpleformatter()
        })
    ]
});

const simpleformatter = winston.format(info => {
    info[MESSAGE] = info.message;
    return info;
});