node.js - Nodejs Winston DailyRotateFile 自定义格式化程序

标签 node.js winston

我使用 DailyRotateFile 一段时间并对结果感到满意。但现在我正在尝试添加一些专门针对我们业务的关键字,例如环境、交易 ID 等。我只知道我们有“meta”参数来提供一些额外的信息,但我真的想要一个自定义格式化程序,因为否则开发人员每次想要记录一些内容时都需要注意这个额外的参数。

也就是说,我将此代码添加到我的记录器设置中。

const transports = [

  new (winston.transports.DailyRotateFile)({
    filename: './logs/scrapper.log',
    datePattern: 'yyyy-MM-dd.',
    prepend: true,
    colorize: true,
    level: config.get('logging.level'),
    zippedArchive: false,
    timestamp: function(){
    return Date.now();
    },
    formatter: function(options){
      return options.timestamp() + '-' + process.env.NODE_ENV + '- 
      message:' + (options.message ? options.message : '')
   }
  }),
  new (winston.transports.Console)({
    timestamp: function() {
      return Date.now();
    },
    formatter: function(options) {
      return options.timestamp() + '-' + process.env.NODE_ENV + '- 
     message: ' + (options.message ? options.message : '')
   }
  })
];

有趣的是,它与控制台传输完美配合,但 DailyRotateFile 的情况却并非如此。我仍然获得日志文件的默认格式。 深入研究库代码,我发现 options.formatter 参数并没有完全到达 winston 库本身的公共(public)模块。 有什么想法吗?

最佳答案

将 JSON 设置为 false 以在每日轮换文件中使用自定义格式化程序

new (winston.transports.DailyRotateFile)({
    filename: './logs/scrapper.log',
    datePattern: 'yyyy-MM-dd.',
    prepend: true,
    colorize: true,
    json:false, //Setting JSON as false
    level: config.get('logging.level'),
    zippedArchive: false,
    timestamp: function(){
    return Date.now();
    },
    formatter: function(options){
      return options.timestamp() + '-' + process.env.NODE_ENV + '-message:' + (options.message ? options.message : '')
   }
  })

关于node.js - Nodejs Winston DailyRotateFile 自定义格式化程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50427378/

相关文章:

javascript - WebRTC dataChannel.readyState 在 "connecting"上停止

node.js - 错误: Can't set headers after they are sent using web-terminal

javascript - Winston javascript 记录器正在创建两个单独的日志文件。如何将所有条目记录到一个文件中?

node.js - 使用 winston : Is there a Cassandra transport? 记录

json - 在 Node.js/Express 中记录所有请求

node.js - Node.js 和 AngularJS 中的 CORS

javascript - Tensorflow.js : How to manage memory for a large dataset created using tf. data.generator 内存泄漏?

node.js - Sequelize 实例方法 beforeCreate Hooks

node.js - NodeJS Express - 全局唯一请求 ID

javascript - 将控制台传输附加到 Winston 日志记录