Reputation: 6563
I'm using Loopback3 and trying to log message for shared model that are outside of project folder. My project folder structure looks like below
myproj\server\logger.js // using winston logger here
myProj\common\models\ // I've couple of models here and able to use above logger
Also, I've few more models outside myproj folder (../../shared/models). Below is my server\model-config.json
"sources": [
"loopback/common/models",
"loopback/server/models",
"../common/models",
"../../shared/models", // Shared models
"./models"
],
And Person is in shared models folder. How can i pass logger object to this.
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'}
});
};
Upvotes: 0
Views: 328
Reputation: 1272
It can be somewhat messy when you have your loopback models spread across multiple directories or even repositories. Its always a good practice to console common parts like logger, validation, utils etc from a static global reference, attached to loopback instance object. This loopback instance object is present as a reference to all its models. The way I would solve this problem is...
logger
class to loopback's app
instance.'use strict';
const { logger } = require("./logger");
module.exports = function (app) {
app.logger = logger;
};
app
reference present on the model.Person.greet = async function(msg) {
Person.app.logger.info("received message: " + msg);
return 'Greetings... ' + msg;
}
Upvotes: 1
Reputation: 6563
I did like below
in server\server.js
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
});
};
in Person model
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;
}
Upvotes: 0