@quatrain/log 1.1.6 → 1.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -23,4 +23,8 @@ import { ConsoleLoggerAdapter } from '@quatrain/log' // Example adapter
23
23
 
24
24
  const logger = Log.addLogger('api', new ConsoleLoggerAdapter(), true)
25
25
  logger.info('Server has started.', { port: 3000 })
26
+
27
+ // Instantiating a sub-logger using clone()
28
+ const subLogger = logger.clone('db') // Inherits configuration, suffixing prefix with ][db
29
+ subLogger.debug('Connection pool initialized.') // Output prefix: [api][db]
26
30
  ```
@@ -21,7 +21,8 @@ export declare abstract class AbstractLoggerAdapter implements LoggerType {
21
21
  protected _logger: any;
22
22
  constructor(prefix?: string, level?: LogLevel);
23
23
  logLevel(level: LogLevel): void;
24
- formatLogMessage: (messages: any[], loglevel?: LogLevel) => string;
24
+ clone(suffix: string): this;
25
+ formatLogMessage: (messages: any[], loglevel?: LogLevel, tag?: string) => string;
25
26
  log(...messages: any[]): void;
26
27
  debug(...messages: any[]): void;
27
28
  warn(...messages: any[]): void;
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractLoggerAdapter.d.ts","sourceRoot":"","sources":["../src/AbstractLoggerAdapter.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IACjB,KAAK,IAAI;IACT,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;IACT,MAAM,IAAI;CACZ;AAED,MAAM,WAAW,UAAU;IACxB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B;AAED,eAAO,MAAM,aAAa,UAOzB,CAAA;AAED,8BAAsB,qBAAsB,YAAW,UAAU;IAC9D,SAAS,CAAC,GAAG,EAAE,MAAM,CAAK;IAC1B,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAgB;IAC7C,SAAS,CAAC,OAAO,EAAE,GAAG,CAAY;gBAEtB,MAAM,SAAK,EAAE,KAAK,GAAE,QAAwB;IAIxD,QAAQ,CAAC,KAAK,EAAE,QAAQ;IAIxB,gBAAgB,aACH,GAAG,EAAE,aACL,QAAQ,KAClB,MAAM,CAgBR;IAOD,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI;IAI7B,KAAK,CAAC,GAAG,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI;IAI/B,IAAI,CAAC,GAAG,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI;IAI9B,IAAI,CAAC,GAAG,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI;IAI9B,KAAK,CAAC,GAAG,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI;IAI/B,KAAK,CAAC,GAAG,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI;CAGjC"}
1
+ {"version":3,"file":"AbstractLoggerAdapter.d.ts","sourceRoot":"","sources":["../src/AbstractLoggerAdapter.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IACjB,KAAK,IAAI;IACT,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;IACT,MAAM,IAAI;CACZ;AAED,MAAM,WAAW,UAAU;IACxB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B;AAED,eAAO,MAAM,aAAa,UAOzB,CAAA;AAED,8BAAsB,qBAAsB,YAAW,UAAU;IAC9D,SAAS,CAAC,GAAG,EAAE,MAAM,CAAK;IAC1B,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAgB;IAC7C,SAAS,CAAC,OAAO,EAAE,GAAG,CAAY;gBAEtB,MAAM,SAAK,EAAE,KAAK,GAAE,QAAwB;IAIxD,QAAQ,CAAC,KAAK,EAAE,QAAQ;IAQxB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK3B,gBAAgB,aACH,GAAG,EAAE,aACL,QAAQ,QACb,MAAM,KACX,MAAM,CAgBR;IAOD,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI;IAI7B,KAAK,CAAC,GAAG,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI;IAI/B,IAAI,CAAC,GAAG,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI;IAI9B,IAAI,CAAC,GAAG,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI;IAI9B,KAAK,CAAC,GAAG,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI;IAI/B,KAAK,CAAC,GAAG,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI;CAGjC"}
@@ -28,9 +28,13 @@ class AbstractLoggerAdapter {
28
28
  logLevel(level) {
29
29
  this._logLevel = level;
30
30
  }
31
- formatLogMessage = (messages, loglevel = LogLevel.INFO) => {
31
+ clone(suffix) {
32
+ const newPrefix = this._me ? `${this._me}][${suffix}` : suffix;
33
+ return new this.constructor(newPrefix, this._logLevel);
34
+ }
35
+ formatLogMessage = (messages, loglevel = LogLevel.INFO, tag = '') => {
32
36
  const flatMessages = messages.flat();
33
- const prefix = `${new Date().toISOString()} - [${this._me}]`;
37
+ const prefix = `${new Date().toISOString()}${tag} - [${this._me}]`;
34
38
  const strs = flatMessages.map((message) => {
35
39
  if (message instanceof Error) {
36
40
  return message.stack || message.message;
@@ -1 +1 @@
1
- {"version":3,"file":"AbstractLoggerAdapter.js","sourceRoot":"","sources":["../src/AbstractLoggerAdapter.ts"],"names":[],"mappings":";;;AAAA,IAAY,QAOX;AAPD,WAAY,QAAQ;IACjB,yCAAS,CAAA;IACT,yCAAS,CAAA;IACT,uCAAQ,CAAA;IACR,uCAAQ,CAAA;IACR,yCAAS,CAAA;IACT,2CAAU,CAAA;AACb,CAAC,EAPW,QAAQ,wBAAR,QAAQ,QAOnB;AAWY,QAAA,aAAa,GAAG;IAC1B,OAAO;IACP,OAAO;IACP,MAAM;IACN,MAAM;IACN,OAAO;IACP,QAAQ;CACV,CAAA;AAED,MAAsB,qBAAqB;IAC9B,GAAG,GAAW,EAAE,CAAA;IAChB,SAAS,GAAa,QAAQ,CAAC,IAAI,CAAA;IACnC,OAAO,GAAQ,SAAS,CAAA;IAElC,YAAY,MAAM,GAAG,EAAE,EAAE,QAAkB,QAAQ,CAAC,IAAI;QACrD,IAAI,CAAC,GAAG,GAAG,MAAM,CAAA;IACpB,CAAC;IAED,QAAQ,CAAC,KAAe;QACrB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;IACzB,CAAC;IAED,gBAAgB,GAAG,CAChB,QAAe,EACf,WAAqB,QAAQ,CAAC,IAAI,EAC3B,EAAE;QAET,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAA;QAEpC,MAAM,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,OAAO,IAAI,CAAC,GAAG,GAAG,CAAA;QAC5D,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,OAAY,EAAE,EAAE;YAC5C,IAAI,OAAO,YAAY,KAAK,EAAE,CAAC;gBAC5B,OAAO,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,CAAA;YAC1C,CAAC;YACD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACnD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;YACjC,CAAC;YACD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAA;QACzB,CAAC,CAAC,CAAA;QAEF,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAA;IACvC,CAAC,CAAA;IAOD,GAAG,CAAC,GAAG,QAAe;QACnB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;IACvE,CAAC;IAED,KAAK,CAAC,GAAG,QAAe;QACrB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;IACvE,CAAC;IAED,IAAI,CAAC,GAAG,QAAe;QACpB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;IACvE,CAAC;IAED,IAAI,CAAC,GAAG,QAAe;QACpB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;IACvE,CAAC;IAED,KAAK,CAAC,GAAG,QAAe;QACrB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;IACvE,CAAC;IAED,KAAK,CAAC,GAAG,QAAe;QACrB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;IACvE,CAAC;CACH;AA9DD,sDA8DC"}
1
+ {"version":3,"file":"AbstractLoggerAdapter.js","sourceRoot":"","sources":["../src/AbstractLoggerAdapter.ts"],"names":[],"mappings":";;;AAAA,IAAY,QAOX;AAPD,WAAY,QAAQ;IACjB,yCAAS,CAAA;IACT,yCAAS,CAAA;IACT,uCAAQ,CAAA;IACR,uCAAQ,CAAA;IACR,yCAAS,CAAA;IACT,2CAAU,CAAA;AACb,CAAC,EAPW,QAAQ,wBAAR,QAAQ,QAOnB;AAWY,QAAA,aAAa,GAAG;IAC1B,OAAO;IACP,OAAO;IACP,MAAM;IACN,MAAM;IACN,OAAO;IACP,QAAQ;CACV,CAAA;AAED,MAAsB,qBAAqB;IAC9B,GAAG,GAAW,EAAE,CAAA;IAChB,SAAS,GAAa,QAAQ,CAAC,IAAI,CAAA;IACnC,OAAO,GAAQ,SAAS,CAAA;IAElC,YAAY,MAAM,GAAG,EAAE,EAAE,QAAkB,QAAQ,CAAC,IAAI;QACrD,IAAI,CAAC,GAAG,GAAG,MAAM,CAAA;IACpB,CAAC;IAED,QAAQ,CAAC,KAAe;QACrB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAA;IACzB,CAAC;IAMD,KAAK,CAAC,MAAc;QACjB,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAA;QAC9D,OAAO,IAAK,IAAI,CAAC,WAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;IAClE,CAAC;IAED,gBAAgB,GAAG,CAChB,QAAe,EACf,WAAqB,QAAQ,CAAC,IAAI,EAClC,MAAc,EAAE,EACT,EAAE;QAET,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAA;QAEpC,MAAM,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG,GAAG,OAAO,IAAI,CAAC,GAAG,GAAG,CAAA;QAClE,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,OAAY,EAAE,EAAE;YAC5C,IAAI,OAAO,YAAY,KAAK,EAAE,CAAC;gBAC5B,OAAO,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,OAAO,CAAA;YAC1C,CAAC;YACD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACnD,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAA;YACjC,CAAC;YACD,OAAO,MAAM,CAAC,OAAO,CAAC,CAAA;QACzB,CAAC,CAAC,CAAA;QAEF,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAA;IACvC,CAAC,CAAA;IAOD,GAAG,CAAC,GAAG,QAAe;QACnB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;IACvE,CAAC;IAED,KAAK,CAAC,GAAG,QAAe;QACrB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;IACvE,CAAC;IAED,IAAI,CAAC,GAAG,QAAe;QACpB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;IACvE,CAAC;IAED,IAAI,CAAC,GAAG,QAAe;QACpB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;IACvE,CAAC;IAED,KAAK,CAAC,GAAG,QAAe;QACrB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;IACvE,CAAC;IAED,KAAK,CAAC,GAAG,QAAe;QACrB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;IACvE,CAAC;CACH;AAxED,sDAwEC"}
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultLoggerAdapter.d.ts","sourceRoot":"","sources":["../src/DefaultLoggerAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAIzE,qBAAa,oBAAqB,SAAQ,qBAAqB;gBAChD,MAAM,SAAK,EAAE,KAAK,GAAE,QAAyB;IAWzD,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK,GAAE,QAAyB,GAAG,IAAI;IAyB5D,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAK/B,KAAK,CAAC,GAAG,QAAQ,EAAE,GAAG,GAAG,IAAI;IAI7B,IAAI,CAAC,GAAG,QAAQ,EAAE,GAAG,GAAG,IAAI;IAI5B,IAAI,CAAC,GAAG,QAAQ,EAAE,GAAG,GAAG,IAAI;IAI5B,KAAK,CAAC,GAAG,QAAQ,EAAE,GAAG,GAAG,IAAI;IAI7B,KAAK,CAAC,GAAG,QAAQ,EAAE,GAAG,GAAG,IAAI;CAG/B"}
1
+ {"version":3,"file":"DefaultLoggerAdapter.d.ts","sourceRoot":"","sources":["../src/DefaultLoggerAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAIzE,qBAAa,oBAAqB,SAAQ,qBAAqB;gBAChD,MAAM,SAAK,EAAE,KAAK,GAAE,QAAyB;IAWzD,GAAG,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,KAAK,GAAE,QAAyB,GAAG,IAAI;IAuC5D,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAK/B,KAAK,CAAC,GAAG,QAAQ,EAAE,GAAG,GAAG,IAAI;IAI7B,IAAI,CAAC,GAAG,QAAQ,EAAE,GAAG,GAAG,IAAI;IAI5B,IAAI,CAAC,GAAG,QAAQ,EAAE,GAAG,GAAG,IAAI;IAI5B,KAAK,CAAC,GAAG,QAAQ,EAAE,GAAG,GAAG,IAAI;IAI7B,KAAK,CAAC,GAAG,QAAQ,EAAE,GAAG,GAAG,IAAI;CAG/B"}
@@ -14,7 +14,19 @@ class DefaultLoggerAdapter extends AbstractLoggerAdapter_1.AbstractLoggerAdapter
14
14
  this._logger.setLevel(level);
15
15
  }
16
16
  log(messages, level = this._logLevel) {
17
- const message = this.formatLogMessage(messages);
17
+ let tag = '';
18
+ if (chalk_1.default.level === 0) {
19
+ const levelNames = {
20
+ [AbstractLoggerAdapter_1.LogLevel.TRACE]: '[TRC]',
21
+ [AbstractLoggerAdapter_1.LogLevel.DEBUG]: '[DBG]',
22
+ [AbstractLoggerAdapter_1.LogLevel.INFO]: '[INF]',
23
+ [AbstractLoggerAdapter_1.LogLevel.WARN]: '[WRN]',
24
+ [AbstractLoggerAdapter_1.LogLevel.ERROR]: '[ERR]',
25
+ [AbstractLoggerAdapter_1.LogLevel.SILENT]: ''
26
+ };
27
+ tag = ` ${levelNames[level] || '[...]'} `;
28
+ }
29
+ const message = this.formatLogMessage(messages, level, tag);
18
30
  switch (level) {
19
31
  case AbstractLoggerAdapter_1.LogLevel.TRACE:
20
32
  this._logger.trace(chalk_1.default.grey(message));
@@ -29,7 +41,7 @@ class DefaultLoggerAdapter extends AbstractLoggerAdapter_1.AbstractLoggerAdapter
29
41
  this._logger.warn(chalk_1.default.red(message));
30
42
  break;
31
43
  case AbstractLoggerAdapter_1.LogLevel.ERROR:
32
- this._logger.error(chalk_1.default.bgRedBright(message));
44
+ this._logger.error(chalk_1.default.bgRed.white.bold(message));
33
45
  break;
34
46
  default:
35
47
  this._logger.log(message);
@@ -1 +1 @@
1
- {"version":3,"file":"DefaultLoggerAdapter.js","sourceRoot":"","sources":["../src/DefaultLoggerAdapter.ts"],"names":[],"mappings":";;;;;;AAAA,mEAAyE;AACzE,wDAA6B;AAC7B,kDAAyB;AAEzB,MAAa,oBAAqB,SAAQ,6CAAqB;IAC5D,YAAY,MAAM,GAAG,EAAE,EAAE,QAAkB,gCAAQ,CAAC,KAAK;QACtD,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QACpB,IAAI,CAAC,OAAO,GAAG,kBAAM,CAAA;QACrB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC/B,CAAC;IAOD,GAAG,CAAC,QAAe,EAAE,QAAkB,IAAI,CAAC,SAAS;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;QAE/C,QAAQ,KAAK,EAAE,CAAC;YACb,KAAK,gCAAQ,CAAC,KAAK;gBAChB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAA;gBACvC,MAAK;YACR,KAAK,gCAAQ,CAAC,KAAK;gBAChB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;gBACzC,MAAK;YACR,KAAK,gCAAQ,CAAC,IAAI;gBACf,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;gBACvC,MAAK;YACR,KAAK,gCAAQ,CAAC,IAAI;gBACf,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;gBACrC,MAAK;YACR,KAAK,gCAAQ,CAAC,KAAK;gBAChB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAA;gBAC9C,MAAK;YACR;gBACG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;gBACzB,MAAK;QACX,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,KAAe;QACrB,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QACrB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC/B,CAAC;IAED,KAAK,CAAC,GAAG,QAAa;QACnB,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,gCAAQ,CAAC,KAAK,CAAC,CAAA;IACrC,CAAC;IAED,IAAI,CAAC,GAAG,QAAa;QAClB,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,gCAAQ,CAAC,IAAI,CAAC,CAAA;IACpC,CAAC;IAED,IAAI,CAAC,GAAG,QAAa;QAClB,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,gCAAQ,CAAC,IAAI,CAAC,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,GAAG,QAAa;QACnB,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,gCAAQ,CAAC,KAAK,CAAC,CAAA;IACrC,CAAC;IAED,KAAK,CAAC,GAAG,QAAa;QACnB,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,gCAAQ,CAAC,KAAK,CAAC,CAAA;IACrC,CAAC;CACH;AA7DD,oDA6DC"}
1
+ {"version":3,"file":"DefaultLoggerAdapter.js","sourceRoot":"","sources":["../src/DefaultLoggerAdapter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quatrain/log",
3
- "version": "1.1.6",
3
+ "version": "1.1.7",
4
4
  "description": "Logger for business apps",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -38,14 +38,24 @@ export abstract class AbstractLoggerAdapter implements LoggerType {
38
38
  this._logLevel = level
39
39
  }
40
40
 
41
+ /**
42
+ * Renvoie un clone de l'adaptateur avec un préfixe concatené
43
+ * Ex: new Logger("Queue").clone("MyQueue") => Logger("Queue][MyQueue") -> qui s'affichera [Queue][MyQueue]
44
+ */
45
+ clone(suffix: string): this {
46
+ const newPrefix = this._me ? `${this._me}][${suffix}` : suffix
47
+ return new (this.constructor as any)(newPrefix, this._logLevel)
48
+ }
49
+
41
50
  formatLogMessage = (
42
51
  messages: any[],
43
- loglevel: LogLevel = LogLevel.INFO
52
+ loglevel: LogLevel = LogLevel.INFO,
53
+ tag: string = ''
44
54
  ): string => {
45
55
  // Flatten nested arrays (from rest parameter spreading)
46
56
  const flatMessages = messages.flat()
47
57
 
48
- const prefix = `${new Date().toISOString()} - [${this._me}]`
58
+ const prefix = `${new Date().toISOString()}${tag} - [${this._me}]`
49
59
  const strs = flatMessages.map((message: any) => {
50
60
  if (message instanceof Error) {
51
61
  return message.stack || message.message
@@ -13,12 +13,17 @@ jest.mock('loglevel', () => ({
13
13
  log: jest.fn(),
14
14
  }))
15
15
 
16
+ const mockBold = jest.fn((s) => s)
17
+ const mockWhite = { bold: mockBold }
18
+ const mockBgRed = { white: mockWhite }
19
+
16
20
  jest.mock('chalk', () => ({
21
+ level: 1,
17
22
  grey: jest.fn((s) => s),
18
23
  yellow: jest.fn((s) => s),
19
24
  green: jest.fn((s) => s),
20
25
  red: jest.fn((s) => s),
21
- bgRedBright: jest.fn((s) => s),
26
+ bgRed: mockBgRed,
22
27
  }))
23
28
 
24
29
  describe('DefaultLoggerAdapter', () => {
@@ -85,12 +90,12 @@ describe('DefaultLoggerAdapter', () => {
85
90
  expect(chalk.red).toHaveBeenCalled()
86
91
  })
87
92
 
88
- it('should log error messages with bgRedBright color', () => {
93
+ it('should log error messages with bgRed.white.bold color', () => {
89
94
  adapter.error('error message')
90
95
  expect(logger.error).toHaveBeenCalledWith(
91
96
  '2023-01-01T00:00:00.000Z - [TEST] error message'
92
97
  )
93
- expect(chalk.bgRedBright).toHaveBeenCalled()
98
+ expect((chalk as any).bgRed.white.bold).toHaveBeenCalled()
94
99
  })
95
100
 
96
101
  it('should log trace messages with grey color', () => {
@@ -15,7 +15,21 @@ export class DefaultLoggerAdapter extends AbstractLoggerAdapter {
15
15
  * @param level LogLevel
16
16
  */
17
17
  log(messages: any[], level: LogLevel = this._logLevel): void {
18
- const message = this.formatLogMessage(messages)
18
+ let tag = ''
19
+ if (chalk.level === 0) {
20
+ // Terminal sans support couleur (fallback)
21
+ const levelNames: Record<number, string> = {
22
+ [LogLevel.TRACE]: '[TRC]',
23
+ [LogLevel.DEBUG]: '[DBG]',
24
+ [LogLevel.INFO]: '[INF]',
25
+ [LogLevel.WARN]: '[WRN]',
26
+ [LogLevel.ERROR]: '[ERR]',
27
+ [LogLevel.SILENT]: ''
28
+ }
29
+ tag = ` ${levelNames[level] || '[...]'} `
30
+ }
31
+
32
+ const message = this.formatLogMessage(messages, level, tag)
19
33
 
20
34
  switch (level) {
21
35
  case LogLevel.TRACE:
@@ -31,7 +45,7 @@ export class DefaultLoggerAdapter extends AbstractLoggerAdapter {
31
45
  this._logger.warn(chalk.red(message))
32
46
  break
33
47
  case LogLevel.ERROR:
34
- this._logger.error(chalk.bgRedBright(message))
48
+ this._logger.error(chalk.bgRed.white.bold(message))
35
49
  break
36
50
  default:
37
51
  this._logger.log(message)