【问题标题】:How to add multiple transport for parse-server logger?如何为解析服务器记录器添加多个传输?
【发布时间】:2018-11-16 06:18:45
【问题描述】:

我可以使用let logger = require('parse-server').logger;通过解析服务器访问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 添加这些传输。

谁能给我一些提示?谢谢!

附加信息: 解析服务器版本:2.6.2

【问题讨论】:

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


    【解决方案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 相同的方式导出记录器。

    希望对您有所帮助。卢卡斯

    【讨论】:

    • 是的,我也想通了。忘了更新我的问题。感谢您发布它!
    【解决方案2】:

    为了将来参考(我如何使用 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}),
    }
    

    【讨论】:

      猜你喜欢
      • 2015-01-06
      • 1970-01-01
      • 2015-07-05
      • 2019-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多