首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Deepstream.io中使用Bunyan?

如何在Deepstream.io中使用Bunyan?
EN

Stack Overflow用户
提问于 2015-11-11 08:44:33
回答 1查看 262关注 0票数 3

根据他们的文档(http://deepstream.io/docs/deepstream.html),它说我可以将默认的记录器更改为自己的:

代码语言:javascript
复制
server.set( 'Logger', new FileLogger() );

(顺便说一句,Logger应该是记录器。当使用Logger时,它会抛出Error: Unknown option "Logger")。但是,我想使用Bunyan作为默认的记录器,我已经尝试了以下这些变体:

代码语言:javascript
复制
var logger = bunyan.createLogger({
  name: "backend",
  streams: streams,
  serializers: {
    row: function (row) {
        if (row) {
            return row;
        }
        return null;
    },
    filename: function (filename) {
        if (filename) {
            return require("path").basename(filename);
        }
        return null;
    }
  }
});

server.set('logger', new logger.info());
server.set('logger', logger.info.bind(console));
server.set('logger', logger.info.bind(logger));
server.set('logger', logger);
server.set('logger', logger.info);

我不断犯的错误是:

代码语言:javascript
复制
TypeError: this._options.logger.log is not a function
  at DependencyInitialiser._onReady (node_modules/deepstream.io/src/utils/dependency-initialiser.js:53:23)
  at new DependencyInitialiser (node_modules/deepstream.io/src/utils/dependency-initialiser.js:25:8)
  at Deepstream.start (node_modules/deepstream.io/src/deepstream.io.js:121:17)
  at Server.<anonymous> (bin/run.js:139:18)
  at Server.g (events.js:260:16)
  at emitNone (events.js:72:20)
  at Server.emit (events.js:166:7)
  at emitListeningNT (net.js:1260:10)
  at doNTCallback1 (node.js:428:9)
  at process._tickDomainCallback (node.js:391:17)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-12 08:25:36

Deepstream期望它的记录器实现两种方法:

代码语言:javascript
复制
/**
 * Logs a line
 *
 * @param   {Number} logLevel   One of the C.LOG_LEVEL constants
 * @param   {String} event      One of the C.EVENT constants
 * @param   {String} logMessage Any string
 *
 * @public
 * @returns {void}
 */
Logger.prototype.log = function( logLevel, event, logMessage ) {};

/**
 * Sets the log-level. This can be called at runtime.
 *
 * @param   {Number} logLevel   One of the C.LOG_LEVEL constants
 *
 * @public
 * @returns {void}
 */
Logger.prototype.setLogLevel = function( logLevel ) {};

这样,为Bunyan编写适配器应该是相当简单的。也请看一看“深流”的std-out记录器,作为参考:

https://github.com/hoxton-one/deepstream.io/blob/master/src/default-plugins/std-out-logger.js

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33646917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档