如何为解析服务器记录器添加多个传输?

时间:2017-09-24 13:36:59

标签: node.js logging parse-platform parse-server

我可以使用let logger = require('parse-server').logger;

通过parse-server访问winston logger曝光器

我想将多个传输文件配置为具有不同日志记录级别的单独文件,就像我可以使用Winston一样:

var logger = new (winston.Logger)({
  transports: [
    new (winston.transports.File)({
      name: 'info-file',
      filename: 'filelog-info.log',
      level: 'info'
    }),
    new (winston.transports.File)({
      name: 'silly-file',
      filename: 'filelog-silly.log',
      level: 'silly'
    })
  ]
});

我尝试使用usgin winston函数: logger.add(winston.transports.File, { ... });

并且:

winston.configure({
    transports: [
      new (winston.transports.File)({ filename: 'somefile.log' })
    ]
  });

但它不起作用。 我也看到了这个PR https://github.com/parse-community/parse-server/pull/2363,但我不明白如何在parse-server的index.js中添加这些传输。

有人可以给我一些提示吗?谢谢!

其他信息: parse-server版本:2.6.2

2 个答案:

答案 0 :(得分:1)

我试图像你一样做。我想添加一个传输来将日志发送到loggly。

我认为这样做的方法是使用logger对象,该对象与parse-server包中的ParseServer对象一起导出。

我添加loggly附加传输的方式如下:

const {ParseServer, logger} = require('parse-server');

const loggly = require('winston-loggly');

const parseApi = new ParseServer({
...
});

logger.adapter.addTransport(new loggly.Loggly({
  subdomain: 'my-subdomain',
  token: 'myToken',
  json: true
}));

我认为这样做是安全的,因为记录器由包以与ParseServer相同的方式导出。

希望它有所帮助。卢卡斯

答案 1 :(得分:0)

为了将来参考(我如何使用winston-mongoDB的示例),我也将添加自己的方法:

1)创建自定义记录器适配器

var _WinstonLoggerAdapter = require('parse-server/lib/Adapters/Logger/WinstonLoggerAdapter');

import * as WinstonMongoDb from 'winston-mongodb';

export function createCustomLoggerAdapter(options) {
    var winston = new _WinstonLoggerAdapter.WinstonLoggerAdapter(options);

    var WinstonMongoDbInstance: any = WinstonMongoDb.MongoDB;
    const transport = new WinstonMongoDbInstance({
        ...options,
        collection: 'ServerLog',
        level: 'error'
    });

    winston.addTransport(transport);
    return winston;
}

2)在解析配置中使用它

var parseConfig = {
   ....,
   loggerAdapter: createCustomLoggerAdapter({db: databaseUri}),
}