UNPKG

1.66 kBJavaScriptView Raw
1'use strict';
2
3const pino = require('pino');
4
5class KellnerLoggerManager {
6 constructor({
7 name,
8 version,
9 logLevel,
10 logEnabled,
11 instant,
12 env,
13 }) {
14 this.name = name;
15 this.version = version;
16 this.logLevel = logLevel;
17 this.logEnabled = logEnabled;
18 this.env = env;
19 this._instance = instant ? this._getInstance() : null;
20 }
21
22 getLogger() {
23 if (!this._instance) {
24 const pinoOptions = {
25 name: `${(this.name)} (${this.version})`,
26 level: this.logLevel,
27 enabled: this.logEnabled,
28 };
29 if (this.env === 'debug')
30 pinoOptions.prettyPrint = { colorize: true };
31
32 this._instance = pino(pinoOptions);
33 this._instance.fatal('fatal logging is [ON]');
34 this._instance.error('error logging is [ON]');
35 this._instance.warn('warn logging is [ON]');
36 this._instance.info('info logging is [ON]');
37 this._instance.debug('debug logging is [ON]');
38 this._instance.trace('trace logging is [ON]');
39 }
40
41 return this._instance;
42 }
43
44 getManager({
45 name,
46 version = this.version,
47 logLevel = this.logLevel,
48 logEnabled = this.logEnabled,
49 env = this.env,
50 instant,
51 }) {
52 if (!name)
53 throw new Error('Logger muste have a name');
54
55 return new KellnerLoggerManager({
56 name: `${this.name}:${name}`,
57 version,
58 logLevel,
59 logEnabled,
60 instant,
61 env,
62 });
63 }
64
65 static getManager({
66 name,
67 version = '0.0.0',
68 logLevel = 'debug',
69 logEnabled = true,
70 instant = false,
71 env = 'debug',
72 }) {
73 if (!name)
74 throw new Error('Logger muste have a name');
75 return new KellnerLoggerManager({
76 name,
77 version,
78 logLevel,
79 logEnabled,
80 instant,
81 env,
82 });
83 }
84}
85
86module.exports = KellnerLoggerManager;