-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
60 lines (49 loc) · 1.75 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
'use strict'
var rootLogger=null;
var defaultLogger = require('./lib/defaultLogger');
var loopbackHook = require('./lib/loopbackHook');
var bunyan = require('bunyan');
var componentInitialized = false;
var loggerMap = {};
module.exports = function(app, config) {
app = app || defaultLogger;
var hook;
// check if the app instance is loopback. This is called when
// the component is getting initialized
if(app.hasOwnProperty('loopback')){
if(!rootLogger) {
console.log('WARN: Logger not initialized correctly ',
'using defaultLogger');
rootLogger = defaultLogger;
}
loopbackHook.init(app,config, rootLogger, loggerMap);
componentInitialized = true;
return;
} else {
if(typeof app === 'string') {
var moduleName = app;
if(!loggerMap.hasOwnProperty(moduleName)) {
// create child logger
var childLogger = rootLogger.child({
submodule: moduleName
});
loggerMap[moduleName] = childLogger;
}
return loggerMap[moduleName];
} else {
// if app is not a string than its a instance of a
// bunyan logger. initialize only once
if(!rootLogger) {
if(app instanceof bunyan) {
rootLogger = app;
loggerMap['root'] = rootLogger;
} else {
var errStr = 'Logger provided is not an instance of bunyan';
//console.log(errStr);
throw new TypeError(errStr);
}
}
return rootLogger;
}
}
};