首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Loopback3中将温斯顿记录器对象传递给共享模型

如何在Loopback3中将温斯顿记录器对象传递给共享模型
EN

Stack Overflow用户
提问于 2020-10-12 17:47:22
回答 2查看 175关注 0票数 0

我正在使用Loopback3,并试图记录在项目文件夹之外的共享模型的消息。我的项目文件夹结构如下所示

代码语言:javascript
复制
myproj\server\logger.js   // using winston logger here
myProj\common\models\     // I've couple of models here and able to use above logger

另外,我在myproj文件夹之外还有几个模型(../../shared/ models )。下面是我的server\model-config.json

代码语言:javascript
复制
"sources": [
  "loopback/common/models",
  "loopback/server/models",
  "../common/models",
  "../../shared/models",  // Shared models
  "./models"
],

Person位于“共享模型”文件夹中。如何将记录器对象传递给它。

代码语言:javascript
复制
module.exports = function(Person){

Person.greet = async function(msg) {
    logger.info("received message: " + msg);  // How to get here above winston logger object ?
    console.log("received message: " + msg);
    return 'Greetings... ' + msg;
}

Person.remoteMethod('greet', {
      accepts: {arg: 'msg', type: 'string'},
      returns: {arg: 'greeting', type: 'string'}
});

};

EN

回答 2

Stack Overflow用户

发布于 2020-10-14 15:13:55

当您将环回模型分散在多个目录或甚至存储库中时,可能会有些混乱。从静态全局引用(附在回送实例对象)中控制台常见部件(如记录器、验证、utils等)始终是一种很好的做法。此回送实例对象作为对其所有模型的引用。我解决这个问题的方法是..。

  1. 在loopback3项目中添加了一个新的引导脚本,并将logger类的实例附加到回送的app实例.

代码语言:javascript
复制
'use strict';

const { logger } = require("./logger");

module.exports = function (app) {
  app.logger = logger;
};

  1. 现在只要有需要,就可以从模型上的app引用中访问它。

代码语言:javascript
复制
Person.greet = async function(msg) {
 Person.app.logger.info("received message: " + msg);
 return 'Greetings... ' + msg;
}
票数 1
EN

Stack Overflow用户

发布于 2020-10-12 18:35:28

我确实喜欢下面

在server\server.js中

代码语言:javascript
复制
const {logger} = require("./logger");

app.start = function() {
return app.listen(function() {
    app.emit('started');
    :
    :
    app.models.Person.logger = logger;   // Adding new property to Person model
  });
};

Person模型中

代码语言:javascript
复制
Person.greet = async function(msg) {
 Person.logger.info("received message: " + msg); // using logger object like this
 this.logger.info("received message: " + msg);   // or like this      
 console.log("received message: " + msg);
 return 'Greetings... ' + msg;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64322859

复制
相关文章

相似问题

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