1 | 'use strict';
|
2 |
|
3 | const pino = require('pino');
|
4 |
|
5 | class 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 |
|
86 | module.exports = KellnerLoggerManager;
|