@hg-ts/logger 0.1.1 → 0.1.3
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/.eslintcache +1 -1
- package/dist/base.formatter.d.ts +17 -0
- package/dist/base.formatter.d.ts.map +1 -0
- package/dist/base.formatter.js +43 -0
- package/dist/base.formatter.js.map +1 -0
- package/dist/base.logger.d.ts +25 -0
- package/dist/base.logger.d.ts.map +1 -0
- package/dist/base.logger.js +68 -0
- package/dist/base.logger.js.map +1 -0
- package/dist/console.logger.d.ts +4 -18
- package/dist/console.logger.d.ts.map +1 -1
- package/dist/console.logger.js +35 -104
- package/dist/console.logger.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/json.logger.d.ts +5 -0
- package/dist/json.logger.d.ts.map +1 -0
- package/dist/json.logger.js +18 -0
- package/dist/json.logger.js.map +1 -0
- package/dist-esm/base.formatter.d.ts +17 -0
- package/dist-esm/base.formatter.d.ts.map +1 -0
- package/dist-esm/base.formatter.js +38 -0
- package/dist-esm/base.formatter.js.map +1 -0
- package/dist-esm/base.logger.d.ts +25 -0
- package/dist-esm/base.logger.d.ts.map +1 -0
- package/dist-esm/base.logger.js +63 -0
- package/dist-esm/base.logger.js.map +1 -0
- package/dist-esm/console.logger.d.ts +4 -18
- package/dist-esm/console.logger.d.ts.map +1 -1
- package/dist-esm/console.logger.js +35 -104
- package/dist-esm/console.logger.js.map +1 -1
- package/dist-esm/index.d.ts +1 -0
- package/dist-esm/index.d.ts.map +1 -1
- package/dist-esm/index.js +1 -0
- package/dist-esm/index.js.map +1 -1
- package/dist-esm/json.logger.d.ts +5 -0
- package/dist-esm/json.logger.d.ts.map +1 -0
- package/dist-esm/json.logger.js +13 -0
- package/dist-esm/json.logger.js.map +1 -0
- package/package.json +5 -5
- package/src/base.formatter.ts +59 -0
- package/src/base.logger.ts +79 -0
- package/src/console.logger.ts +44 -123
- package/src/index.ts +1 -0
- package/src/json.logger.ts +18 -0
- package/dist/syslog.logger.d.ts +0 -20
- package/dist/syslog.logger.d.ts.map +0 -1
- package/dist/syslog.logger.js +0 -132
- package/dist/syslog.logger.js.map +0 -1
package/.eslintcache
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"/Volumes/Work/ts/hg/framework/packages/exception/src/consts.ts":"1","/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/aggregate-error.exception.ts":"2","/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/base.aggregate.exception.ts":"3","/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/base.exception.ts":"4","/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/error.exception.ts":"5","/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/forbidden.exception.ts":"6","/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/index.ts":"7","/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/not-implemented.exception.ts":"8","/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/unknown.exception.ts":"9","/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/will-never-happened.exception.ts":"10","/Volumes/Work/ts/hg/framework/packages/exception/src/index.ts":"11","/Volumes/Work/ts/hg/framework/packages/exception/src/tests/serialization.test-suite.ts":"12","/Volumes/Work/ts/hg/framework/packages/exception/src/tests/test.aggregate-exception.ts":"13","/Volumes/Work/ts/hg/framework/packages/exception/src/tests/test.exception.ts":"14","/Volumes/Work/ts/hg/framework/packages/exception/src/utils/index.ts":"15","/Volumes/Work/ts/hg/framework/packages/exception/src/utils/stack-trace.formatter.ts":"16","/Volumes/Work/ts/hg/framework/packages/ioc/src/index.ts":"17","/Volumes/Work/ts/hg/framework/packages/logger/src/index.ts":"18","/Volumes/Work/ts/hg/framework/packages/logger/src/colors.ts":"19","/Volumes/Work/ts/hg/framework/packages/logger/src/console.logger.ts":"20","/Volumes/Work/ts/hg/framework/packages/logger/src/logger.ts":"21","/Volumes/Work/ts/hg/framework/packages/logger/src/mock.logger.ts":"22"},{"size":73,"mtime":1659719206461,"results":"23","hashOfConfig":"24"},{"size":656,"mtime":1631395128717,"results":"25","hashOfConfig":"24"},{"size":1377,"mtime":1660867889450,"results":"26","hashOfConfig":"24"},{"size":3220,"mtime":1664331682837,"results":"27","hashOfConfig":"24"},{"size":375,"mtime":1658005568468,"results":"28","hashOfConfig":"24"},{"size":108,"mtime":1643091718782,"results":"29","hashOfConfig":"24"},{"size":418,"mtime":1643091718779,"results":"30","hashOfConfig":"24"},{"size":169,"mtime":1626299896345,"results":"31","hashOfConfig":"24"},{"size":167,"mtime":1626299896345,"results":"32","hashOfConfig":"24"},{"size":177,"mtime":1626299896345,"results":"33","hashOfConfig":"24"},{"size":53,"mtime":1665300013469,"results":"34","hashOfConfig":"24"},{"size":3373,"mtime":1665300013444,"results":"35","hashOfConfig":"24"},{"size":430,"mtime":1660867792014,"results":"36","hashOfConfig":"24"},{"size":186,"mtime":1657995065457,"results":"37","hashOfConfig":"24"},{"size":41,"mtime":1626299896346,"results":"38","hashOfConfig":"24"},{"size":930,"mtime":1659719246420,"results":"39","hashOfConfig":"24"},{"size":86,"mtime":1672804565919,"results":"40","hashOfConfig":"41"},{"size":129,"mtime":1698022585983,"results":"42","hashOfConfig":"43"},{"size":331,"mtime":1688235091950,"results":"44","hashOfConfig":"43"},{"size":3987,"mtime":1688235091950,"results":"45","hashOfConfig":"43"},{"size":537,"mtime":1688235091951,"results":"46","hashOfConfig":"43"},{"size":319,"mtime":1688235091951,"results":"47","hashOfConfig":"43"},{"filePath":"48","messages":"49","suppressedMessages":"50","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"1hmldtr",{"filePath":"51","messages":"52","suppressedMessages":"53","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"54","messages":"55","suppressedMessages":"56","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"57","messages":"58","suppressedMessages":"59","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"60","messages":"61","suppressedMessages":"62","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"63","messages":"64","suppressedMessages":"65","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"66","messages":"67","suppressedMessages":"68","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"69","messages":"70","suppressedMessages":"71","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"72","messages":"73","suppressedMessages":"74","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"75","messages":"76","suppressedMessages":"77","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"78","messages":"79","suppressedMessages":"80","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"81","messages":"82","suppressedMessages":"83","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"84","messages":"85","suppressedMessages":"86","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"87","messages":"88","suppressedMessages":"89","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"90","messages":"91","suppressedMessages":"92","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"93","messages":"94","suppressedMessages":"95","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"96","messages":"97","suppressedMessages":"98","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"59fpe9",{"filePath":"99","messages":"100","suppressedMessages":"101","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"wcs6o6",{"filePath":"102","messages":"103","suppressedMessages":"104","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"105","messages":"106","suppressedMessages":"107","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"108","messages":"109","suppressedMessages":"110","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"111","messages":"112","suppressedMessages":"113","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/Volumes/Work/ts/hg/framework/packages/exception/src/consts.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/aggregate-error.exception.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/base.aggregate.exception.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/base.exception.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/error.exception.ts",[],["114"],"/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/forbidden.exception.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/index.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/not-implemented.exception.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/unknown.exception.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/will-never-happened.exception.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/exception/src/index.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/exception/src/tests/serialization.test-suite.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/exception/src/tests/test.aggregate-exception.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/exception/src/tests/test.exception.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/exception/src/utils/index.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/exception/src/utils/stack-trace.formatter.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/ioc/src/index.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/logger/src/index.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/logger/src/colors.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/logger/src/console.logger.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/logger/src/logger.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/logger/src/mock.logger.ts",[],[],{"ruleId":"115","severity":2,"message":"116","line":11,"column":7,"nodeType":"117","messageId":"118","endLine":11,"endColumn":16,"suppressions":"119"},"no-undefined","Unexpected use of undefined.","Identifier","unexpectedUndefined",["120"],{"kind":"121","justification":"122"},"directive",""]
|
|
1
|
+
[{"/Volumes/Work/ts/hg/framework/packages/exception/src/consts.ts":"1","/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/aggregate-error.exception.ts":"2","/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/base.aggregate.exception.ts":"3","/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/base.exception.ts":"4","/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/error.exception.ts":"5","/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/forbidden.exception.ts":"6","/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/index.ts":"7","/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/not-implemented.exception.ts":"8","/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/unknown.exception.ts":"9","/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/will-never-happened.exception.ts":"10","/Volumes/Work/ts/hg/framework/packages/exception/src/index.ts":"11","/Volumes/Work/ts/hg/framework/packages/exception/src/tests/serialization.test-suite.ts":"12","/Volumes/Work/ts/hg/framework/packages/exception/src/tests/test.aggregate-exception.ts":"13","/Volumes/Work/ts/hg/framework/packages/exception/src/tests/test.exception.ts":"14","/Volumes/Work/ts/hg/framework/packages/exception/src/utils/index.ts":"15","/Volumes/Work/ts/hg/framework/packages/exception/src/utils/stack-trace.formatter.ts":"16","/Volumes/Work/ts/hg/framework/packages/ioc/src/index.ts":"17","/Volumes/Work/ts/hg/framework/packages/logger/src/index.ts":"18","/Volumes/Work/ts/hg/framework/packages/logger/src/colors.ts":"19","/Volumes/Work/ts/hg/framework/packages/logger/src/console.logger.ts":"20","/Volumes/Work/ts/hg/framework/packages/logger/src/logger.ts":"21","/Volumes/Work/ts/hg/framework/packages/logger/src/mock.logger.ts":"22","/Volumes/Work/ts/hg/framework/packages/logger/src/base.formatter.ts":"23","/Volumes/Work/ts/hg/framework/packages/logger/src/base.logger.ts":"24","/Volumes/Work/ts/hg/framework/packages/logger/src/json.logger.ts":"25"},{"size":73,"mtime":1659719206461,"results":"26","hashOfConfig":"27"},{"size":656,"mtime":1631395128717,"results":"28","hashOfConfig":"27"},{"size":1377,"mtime":1660867889450,"results":"29","hashOfConfig":"27"},{"size":3220,"mtime":1664331682837,"results":"30","hashOfConfig":"27"},{"size":375,"mtime":1658005568468,"results":"31","hashOfConfig":"27"},{"size":108,"mtime":1643091718782,"results":"32","hashOfConfig":"27"},{"size":418,"mtime":1643091718779,"results":"33","hashOfConfig":"27"},{"size":169,"mtime":1626299896345,"results":"34","hashOfConfig":"27"},{"size":167,"mtime":1626299896345,"results":"35","hashOfConfig":"27"},{"size":177,"mtime":1626299896345,"results":"36","hashOfConfig":"27"},{"size":53,"mtime":1665300013469,"results":"37","hashOfConfig":"27"},{"size":3373,"mtime":1665300013444,"results":"38","hashOfConfig":"27"},{"size":430,"mtime":1660867792014,"results":"39","hashOfConfig":"27"},{"size":186,"mtime":1657995065457,"results":"40","hashOfConfig":"27"},{"size":41,"mtime":1626299896346,"results":"41","hashOfConfig":"27"},{"size":930,"mtime":1659719246420,"results":"42","hashOfConfig":"27"},{"size":86,"mtime":1672804565919,"results":"43","hashOfConfig":"44"},{"size":173,"mtime":1713129840164,"results":"45","hashOfConfig":"46"},{"size":331,"mtime":1688235091950,"results":"47","hashOfConfig":"46"},{"size":2002,"mtime":1713129705197,"results":"48","hashOfConfig":"46"},{"size":537,"mtime":1688235091951,"results":"49","hashOfConfig":"46"},{"size":319,"mtime":1688235091951,"results":"50","hashOfConfig":"46"},{"size":1279,"mtime":1713131880531,"results":"51","hashOfConfig":"46"},{"size":2008,"mtime":1713128458315,"results":"52","hashOfConfig":"46"},{"size":404,"mtime":1713129590435,"results":"53","hashOfConfig":"46"},{"filePath":"54","messages":"55","suppressedMessages":"56","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"1hmldtr",{"filePath":"57","messages":"58","suppressedMessages":"59","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"60","messages":"61","suppressedMessages":"62","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"63","messages":"64","suppressedMessages":"65","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"66","messages":"67","suppressedMessages":"68","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"69","messages":"70","suppressedMessages":"71","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"72","messages":"73","suppressedMessages":"74","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"75","messages":"76","suppressedMessages":"77","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"78","messages":"79","suppressedMessages":"80","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"81","messages":"82","suppressedMessages":"83","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"84","messages":"85","suppressedMessages":"86","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"87","messages":"88","suppressedMessages":"89","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"90","messages":"91","suppressedMessages":"92","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"93","messages":"94","suppressedMessages":"95","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"96","messages":"97","suppressedMessages":"98","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"99","messages":"100","suppressedMessages":"101","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"102","messages":"103","suppressedMessages":"104","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"59fpe9",{"filePath":"105","messages":"106","suppressedMessages":"107","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"wcs6o6",{"filePath":"108","messages":"109","suppressedMessages":"110","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"111","messages":"112","suppressedMessages":"113","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"114","messages":"115","suppressedMessages":"116","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"117","messages":"118","suppressedMessages":"119","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"120","messages":"121","suppressedMessages":"122","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"123","messages":"124","suppressedMessages":"125","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},{"filePath":"126","messages":"127","suppressedMessages":"128","errorCount":0,"fatalErrorCount":0,"warningCount":0,"fixableErrorCount":0,"fixableWarningCount":0},"/Volumes/Work/ts/hg/framework/packages/exception/src/consts.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/aggregate-error.exception.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/base.aggregate.exception.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/base.exception.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/error.exception.ts",[],["129"],"/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/forbidden.exception.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/index.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/not-implemented.exception.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/unknown.exception.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/exception/src/exceptions/will-never-happened.exception.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/exception/src/index.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/exception/src/tests/serialization.test-suite.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/exception/src/tests/test.aggregate-exception.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/exception/src/tests/test.exception.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/exception/src/utils/index.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/exception/src/utils/stack-trace.formatter.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/ioc/src/index.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/logger/src/index.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/logger/src/colors.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/logger/src/console.logger.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/logger/src/logger.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/logger/src/mock.logger.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/logger/src/base.formatter.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/logger/src/base.logger.ts",[],[],"/Volumes/Work/ts/hg/framework/packages/logger/src/json.logger.ts",[],[],{"ruleId":"130","severity":2,"message":"131","line":11,"column":7,"nodeType":"132","messageId":"133","endLine":11,"endColumn":16,"suppressions":"134"},"no-undefined","Unexpected use of undefined.","Identifier","unexpectedUndefined",["135"],{"kind":"136","justification":"137"},"directive",""]
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/// <reference types="@hg-ts/types" />
|
|
2
|
+
import winston from 'winston';
|
|
3
|
+
import { LogLevel } from './base.logger';
|
|
4
|
+
export type LogMessage = winston.Logform.TransformableInfo & {
|
|
5
|
+
context: Nullable<string>;
|
|
6
|
+
message: string;
|
|
7
|
+
level: LogLevel;
|
|
8
|
+
process: {
|
|
9
|
+
pid: number;
|
|
10
|
+
title: Nullable<string>;
|
|
11
|
+
};
|
|
12
|
+
timestamp: Date;
|
|
13
|
+
items: unknown[];
|
|
14
|
+
};
|
|
15
|
+
export declare const baseFormatter: winston.Logform.FormatWrap;
|
|
16
|
+
export declare function createFormatter(formatter: (info: LogMessage) => LogMessage): winston.Logform.FormatWrap;
|
|
17
|
+
//# sourceMappingURL=base.formatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.formatter.d.ts","sourceRoot":"","sources":["../src/base.formatter.ts"],"names":[],"mappings":";AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EACN,QAAQ,EAER,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,GAAG;IAC5D,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE;QACR,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;KACxB,CAAC;IACF,SAAS,EAAE,IAAI,CAAC;IAChB,KAAK,EAAE,OAAO,EAAE,CAAC;CACjB,CAAC;AAkBF,eAAO,MAAM,aAAa,4BAoBxB,CAAC;AAEH,wBAAgB,eAAe,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAEvG"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createFormatter = exports.baseFormatter = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const winston_1 = tslib_1.__importDefault(require("winston"));
|
|
6
|
+
const base_logger_1 = require("./base.logger");
|
|
7
|
+
function getLogData(info) {
|
|
8
|
+
const level = base_logger_1.syslogToLoggerMap.get(info.level) ?? info.level;
|
|
9
|
+
return {
|
|
10
|
+
level,
|
|
11
|
+
context: info['context'] ?? null,
|
|
12
|
+
process: {
|
|
13
|
+
pid: process.pid,
|
|
14
|
+
title: process.title.endsWith('node') ? null : process.title,
|
|
15
|
+
},
|
|
16
|
+
message: info.message,
|
|
17
|
+
items: info['items'],
|
|
18
|
+
timestamp: new Date(),
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
exports.baseFormatter = winston_1.default.format(info => {
|
|
22
|
+
const logData = getLogData(info);
|
|
23
|
+
logData['items'] = logData.items
|
|
24
|
+
.map(item => {
|
|
25
|
+
if (typeof item === 'bigint') {
|
|
26
|
+
return `${item}n`;
|
|
27
|
+
}
|
|
28
|
+
if (item instanceof Error && !('toJSON' in item)) {
|
|
29
|
+
return {
|
|
30
|
+
name: item.name,
|
|
31
|
+
message: item.message,
|
|
32
|
+
stack: item.stack,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
return item;
|
|
36
|
+
});
|
|
37
|
+
return logData;
|
|
38
|
+
});
|
|
39
|
+
function createFormatter(formatter) {
|
|
40
|
+
return winston_1.default.format(formatter);
|
|
41
|
+
}
|
|
42
|
+
exports.createFormatter = createFormatter;
|
|
43
|
+
//# sourceMappingURL=base.formatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.formatter.js","sourceRoot":"","sources":["../src/base.formatter.ts"],"names":[],"mappings":";;;;AAAA,8DAA8B;AAC9B,+CAGuB;AAcvB,SAAS,UAAU,CAAC,IAAuC;IAC1D,MAAM,KAAK,GAAG,+BAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAiB,CAAC;IAE1E,OAAO;QACN,KAAK;QACL,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI;QAChC,OAAO,EAAE;YACR,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK;SAC5D;QACD,OAAO,EAAE,IAAI,CAAC,OAAiB;QAC/B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC;QACpB,SAAS,EAAE,IAAI,IAAI,EAAE;KACrB,CAAC;AACH,CAAC;AAEY,QAAA,aAAa,GAAG,iBAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;IAClD,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAEjC,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,KAAK;SAC9B,GAAG,CAAC,IAAI,CAAC,EAAE;QACX,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC7B,OAAO,GAAG,IAAI,GAAG,CAAC;SAClB;QAED,IAAI,IAAI,YAAY,KAAK,IAAI,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,EAAE;YACjD,OAAO;gBACN,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,KAAK,EAAE,IAAI,CAAC,KAAK;aACjB,CAAC;SACF;QAED,OAAO,IAAI,CAAC;IACb,CAAC,CAAC,CAAC;IACJ,OAAO,OAAO,CAAC;AAChB,CAAC,CAAC,CAAC;AAEH,SAAgB,eAAe,CAAC,SAA2C;IAC1E,OAAO,iBAAO,CAAC,MAAM,CAAC,SAAgB,CAAC,CAAC;AACzC,CAAC;AAFD,0CAEC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/// <reference types="@hg-ts/types" />
|
|
2
|
+
import winston from 'winston';
|
|
3
|
+
import { Logger } from './logger';
|
|
4
|
+
type Transport = winston.Logger['add'] extends (transport: infer R) => void ? R : never;
|
|
5
|
+
export type LogLevel = keyof Omit<Logger, 'setContext'>;
|
|
6
|
+
export declare const syslogToLoggerMap: Map<string, "debug" | "info" | "notice" | "warning" | "error" | "critical" | "alert" | "emergency">;
|
|
7
|
+
export declare const loggerToSyslogMap: Map<"debug" | "info" | "notice" | "warning" | "error" | "critical" | "alert" | "emergency", string>;
|
|
8
|
+
export declare abstract class BaseLogger implements Logger {
|
|
9
|
+
protected context: Nullable<string>;
|
|
10
|
+
private readonly logger;
|
|
11
|
+
protected constructor(logLevel: LogLevel, context: string);
|
|
12
|
+
debug(...messages: unknown[]): void;
|
|
13
|
+
info(...messages: unknown[]): void;
|
|
14
|
+
notice(...messages: unknown[]): void;
|
|
15
|
+
warning(...messages: unknown[]): void;
|
|
16
|
+
error(...messages: unknown[]): void;
|
|
17
|
+
critical(...messages: unknown[]): void;
|
|
18
|
+
alert(...messages: unknown[]): void;
|
|
19
|
+
emergency(...messages: unknown[]): void;
|
|
20
|
+
setContext(context: Nullable<string>): void;
|
|
21
|
+
protected addTransport(transport: Transport): void;
|
|
22
|
+
private log;
|
|
23
|
+
}
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=base.logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.logger.d.ts","sourceRoot":"","sources":["../src/base.logger.ts"],"names":[],"mappings":";AACA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,KAAK,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,KAAK,CAAC;AAExF,MAAM,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAExD,eAAO,MAAM,iBAAiB,qGAEL,CAAC;AAE1B,eAAO,MAAM,iBAAiB,qGAEL,CAAC;AAG1B,8BAAsB,UAAW,YAAW,MAAM;IACjD,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAQ;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IAExC,SAAS,aAAa,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM;IAalD,KAAK,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI;IAGnC,IAAI,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI;IAGlC,MAAM,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI;IAGpC,OAAO,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI;IAGrC,KAAK,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI;IAGnC,QAAQ,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI;IAGtC,KAAK,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI;IAGnC,SAAS,CAAC,GAAG,QAAQ,EAAE,OAAO,EAAE,GAAG,IAAI;IAIvC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI;IAIlD,SAAS,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAIlD,OAAO,CAAC,GAAG;CAUX"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseLogger = exports.loggerToSyslogMap = exports.syslogToLoggerMap = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const node_util_1 = require("node:util");
|
|
6
|
+
const winston_1 = tslib_1.__importDefault(require("winston"));
|
|
7
|
+
exports.syslogToLoggerMap = new Map()
|
|
8
|
+
.set('emerg', 'emergency')
|
|
9
|
+
.set('crit', 'critical');
|
|
10
|
+
exports.loggerToSyslogMap = new Map()
|
|
11
|
+
.set('emergency', 'emerg')
|
|
12
|
+
.set('critical', 'crit');
|
|
13
|
+
class BaseLogger {
|
|
14
|
+
context = null;
|
|
15
|
+
logger;
|
|
16
|
+
constructor(logLevel, context) {
|
|
17
|
+
this.context = context;
|
|
18
|
+
this.logger = winston_1.default.createLogger({
|
|
19
|
+
level: logLevel,
|
|
20
|
+
levels: winston_1.default.config.syslog.levels,
|
|
21
|
+
transports: [],
|
|
22
|
+
handleExceptions: true,
|
|
23
|
+
handleRejections: true,
|
|
24
|
+
exitOnError: false,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
debug(...messages) {
|
|
28
|
+
this.log('debug', messages);
|
|
29
|
+
}
|
|
30
|
+
info(...messages) {
|
|
31
|
+
this.log('info', messages);
|
|
32
|
+
}
|
|
33
|
+
notice(...messages) {
|
|
34
|
+
this.log('notice', messages);
|
|
35
|
+
}
|
|
36
|
+
warning(...messages) {
|
|
37
|
+
this.log('warning', messages);
|
|
38
|
+
}
|
|
39
|
+
error(...messages) {
|
|
40
|
+
this.log('error', messages);
|
|
41
|
+
}
|
|
42
|
+
critical(...messages) {
|
|
43
|
+
this.log('critical', messages);
|
|
44
|
+
}
|
|
45
|
+
alert(...messages) {
|
|
46
|
+
this.log('alert', messages);
|
|
47
|
+
}
|
|
48
|
+
emergency(...messages) {
|
|
49
|
+
this.log('emergency', messages);
|
|
50
|
+
}
|
|
51
|
+
setContext(context) {
|
|
52
|
+
this.context = context;
|
|
53
|
+
}
|
|
54
|
+
addTransport(transport) {
|
|
55
|
+
this.logger.add(transport);
|
|
56
|
+
}
|
|
57
|
+
log(level, messages) {
|
|
58
|
+
const mappedLevel = exports.loggerToSyslogMap.get(level) ?? level;
|
|
59
|
+
this.logger.log({
|
|
60
|
+
level: mappedLevel,
|
|
61
|
+
message: (0, node_util_1.format)(...messages),
|
|
62
|
+
items: messages,
|
|
63
|
+
context: this.context,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
exports.BaseLogger = BaseLogger;
|
|
68
|
+
//# sourceMappingURL=base.logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.logger.js","sourceRoot":"","sources":["../src/base.logger.ts"],"names":[],"mappings":";;;;AAAA,yCAAmC;AACnC,8DAA8B;AAQjB,QAAA,iBAAiB,GAAG,IAAI,GAAG,EAAoB;KAC1D,GAAG,CAAC,OAAO,EAAE,WAAW,CAAC;KACzB,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAEb,QAAA,iBAAiB,GAAG,IAAI,GAAG,EAAoB;KAC1D,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC;KACzB,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AAG1B,MAAsB,UAAU;IACrB,OAAO,GAAqB,IAAI,CAAC;IAC1B,MAAM,CAAiB;IAExC,YAAsB,QAAkB,EAAE,OAAe;QACxD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,IAAI,CAAC,MAAM,GAAG,iBAAO,CAAC,YAAY,CAAC;YAClC,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,iBAAO,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM;YACpC,UAAU,EAAE,EAAE;YACd,gBAAgB,EAAE,IAAI;YACtB,gBAAgB,EAAE,IAAI;YACtB,WAAW,EAAE,KAAK;SAClB,CAAC,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,GAAG,QAAmB;QAClC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC7B,CAAC;IACM,IAAI,CAAC,GAAG,QAAmB;QACjC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC5B,CAAC;IACM,MAAM,CAAC,GAAG,QAAmB;QACnC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9B,CAAC;IACM,OAAO,CAAC,GAAG,QAAmB;QACpC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC/B,CAAC;IACM,KAAK,CAAC,GAAG,QAAmB;QAClC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC7B,CAAC;IACM,QAAQ,CAAC,GAAG,QAAmB;QACrC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAChC,CAAC;IACM,KAAK,CAAC,GAAG,QAAmB;QAClC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC7B,CAAC;IACM,SAAS,CAAC,GAAG,QAAmB;QACtC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IACjC,CAAC;IAEM,UAAU,CAAC,OAAyB;QAC1C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,CAAC;IAES,YAAY,CAAC,SAAoB;QAC1C,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC5B,CAAC;IAEO,GAAG,CAAC,KAAe,EAAE,QAAmB;QAC/C,MAAM,WAAW,GAAG,yBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;QAE1D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;YACf,KAAK,EAAE,WAAW;YAClB,OAAO,EAAE,IAAA,kBAAM,EAAC,GAAG,QAAQ,CAAC;YAC5B,KAAK,EAAE,QAAQ;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;SACrB,CAAC,CAAC;IACJ,CAAC;CACD;AA5DD,gCA4DC"}
|
package/dist/console.logger.d.ts
CHANGED
|
@@ -1,21 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
export declare
|
|
5
|
-
export declare class ConsoleLogger extends Logger {
|
|
6
|
-
protected context: Nullable<string>;
|
|
7
|
-
private readonly logger;
|
|
1
|
+
import { BaseLogger } from './base.logger';
|
|
2
|
+
import { COLOR } from './colors';
|
|
3
|
+
export declare const colorsMap: Map<"debug" | "info" | "notice" | "warning" | "error" | "critical" | "alert" | "emergency", COLOR>;
|
|
4
|
+
export declare class ConsoleLogger extends BaseLogger {
|
|
8
5
|
constructor();
|
|
9
|
-
debug(...messages: unknown[]): void;
|
|
10
|
-
info(...messages: unknown[]): void;
|
|
11
|
-
notice(...messages: unknown[]): void;
|
|
12
|
-
warning(...messages: unknown[]): void;
|
|
13
|
-
error(...messages: unknown[]): void;
|
|
14
|
-
critical(...messages: unknown[]): void;
|
|
15
|
-
alert(...messages: unknown[]): void;
|
|
16
|
-
emergency(...messages: unknown[]): void;
|
|
17
|
-
setContext(context: Nullable<string>): void;
|
|
18
|
-
private log;
|
|
19
6
|
}
|
|
20
|
-
export {};
|
|
21
7
|
//# sourceMappingURL=console.logger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"console.logger.d.ts","sourceRoot":"","sources":["../src/console.logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"console.logger.d.ts","sourceRoot":"","sources":["../src/console.logger.ts"],"names":[],"mappings":"AAOA,OAAO,EACN,UAAU,EAEV,MAAM,eAAe,CAAC;AACvB,OAAO,EACN,KAAK,EAEL,MAAM,UAAU,CAAC;AAElB,eAAO,MAAM,SAAS,oGAQc,CAAC;AAwDrC,qBAAa,aAAc,SAAQ,UAAU;;CAM5C"}
|
package/dist/console.logger.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ConsoleLogger = exports.
|
|
3
|
+
exports.ConsoleLogger = exports.colorsMap = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
|
-
const node_util_1 = require("node:util");
|
|
6
5
|
const winston_1 = tslib_1.__importDefault(require("winston"));
|
|
7
6
|
const triple_beam_1 = require("triple-beam");
|
|
7
|
+
const base_formatter_1 = require("./base.formatter");
|
|
8
|
+
const base_logger_1 = require("./base.logger");
|
|
8
9
|
const colors_1 = require("./colors");
|
|
9
|
-
|
|
10
|
-
const colorsMap = new Map()
|
|
10
|
+
exports.colorsMap = new Map()
|
|
11
11
|
.set('emergency', colors_1.COLOR.RED)
|
|
12
12
|
.set('alert', colors_1.COLOR.RED)
|
|
13
13
|
.set('critical', colors_1.COLOR.RED)
|
|
@@ -16,116 +16,47 @@ const colorsMap = new Map()
|
|
|
16
16
|
.set('notice', colors_1.COLOR.GREEN)
|
|
17
17
|
.set('info', colors_1.COLOR.CYAN_BRIGHT)
|
|
18
18
|
.set('debug', colors_1.COLOR.MAGENTA_BRIGHT);
|
|
19
|
-
|
|
20
|
-
.
|
|
21
|
-
.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
'emergency',
|
|
27
|
-
'alert',
|
|
28
|
-
'critical',
|
|
29
|
-
'error',
|
|
30
|
-
'warning',
|
|
31
|
-
'notice',
|
|
32
|
-
'info',
|
|
33
|
-
'debug',
|
|
34
|
-
];
|
|
35
|
-
const levelFormat = winston_1.default.format(info => {
|
|
36
|
-
info[triple_beam_1.LEVEL] = info.level;
|
|
37
|
-
const mappedLevel = syslogToLoggerMap.get(info[triple_beam_1.LEVEL]) ?? info[triple_beam_1.LEVEL];
|
|
38
|
-
const levelColor = colorsMap.get(mappedLevel);
|
|
39
|
-
info.level = `<${(0, colors_1.colorize)(levelColor, mappedLevel)}>`;
|
|
40
|
-
return info;
|
|
41
|
-
});
|
|
42
|
-
const contextFormat = winston_1.default.format(info => {
|
|
43
|
-
if (info['context']) {
|
|
44
|
-
info['context'] = (0, colors_1.colorize)(colors_1.COLOR.ORANGE, info['context']);
|
|
45
|
-
info['context'] = `[${info['context']}]`;
|
|
46
|
-
}
|
|
47
|
-
return info;
|
|
48
|
-
});
|
|
49
|
-
const colorizeFormat = winston_1.default.format(info => {
|
|
50
|
-
const mappedLevel = syslogToLoggerMap.get(info[triple_beam_1.LEVEL]) ?? info[triple_beam_1.LEVEL];
|
|
51
|
-
const levelColor = colorsMap.get(mappedLevel);
|
|
52
|
-
info[triple_beam_1.MESSAGE] = (0, colors_1.colorize)(levelColor, info.message);
|
|
53
|
-
return info;
|
|
54
|
-
});
|
|
55
|
-
const processInfoFormat = winston_1.default.format(info => {
|
|
56
|
-
if (process.title.endsWith('node')) {
|
|
57
|
-
info['process'] = `[pid: ${process.pid}]`;
|
|
19
|
+
function colorizeLevel(level) {
|
|
20
|
+
const levelColor = exports.colorsMap.get(level);
|
|
21
|
+
return `<${(0, colors_1.colorize)(levelColor, level)}>`;
|
|
22
|
+
}
|
|
23
|
+
function colorizeContext(context) {
|
|
24
|
+
if (context) {
|
|
25
|
+
return `[${(0, colors_1.colorize)(colors_1.COLOR.ORANGE, context)}]`;
|
|
58
26
|
}
|
|
59
|
-
|
|
60
|
-
|
|
27
|
+
return '';
|
|
28
|
+
}
|
|
29
|
+
function colorizeMessage(level, message) {
|
|
30
|
+
const levelColor = exports.colorsMap.get(level);
|
|
31
|
+
return (0, colors_1.colorize)(levelColor, message);
|
|
32
|
+
}
|
|
33
|
+
function formatProcess(process) {
|
|
34
|
+
if (process.title) {
|
|
35
|
+
return `[${process.title}: ${process.pid}]`;
|
|
61
36
|
}
|
|
62
|
-
return
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
const
|
|
69
|
-
const
|
|
37
|
+
return `[pid: ${process.pid}]`;
|
|
38
|
+
}
|
|
39
|
+
function formatTime(time) {
|
|
40
|
+
return time.toLocaleString('ru-RU');
|
|
41
|
+
}
|
|
42
|
+
const customFormat = (0, base_formatter_1.createFormatter)(info => {
|
|
43
|
+
const process = formatProcess(info.process);
|
|
44
|
+
const timestamp = formatTime(info.timestamp);
|
|
45
|
+
const context = colorizeContext(info.context);
|
|
46
|
+
const level = colorizeLevel(info.level);
|
|
47
|
+
const message = colorizeMessage(info.level, info.message);
|
|
70
48
|
const metaInfoItems = [timestamp, context, level, process];
|
|
71
49
|
const metaInfo = metaInfoItems.join(' ');
|
|
72
50
|
info[triple_beam_1.MESSAGE] = `${metaInfo}: ${message}`;
|
|
73
51
|
return info;
|
|
74
52
|
});
|
|
75
53
|
const consoleTransport = new winston_1.default.transports.Console({
|
|
76
|
-
format: winston_1.default.format.combine(
|
|
54
|
+
format: winston_1.default.format.combine((0, base_formatter_1.baseFormatter)(), customFormat()),
|
|
77
55
|
});
|
|
78
|
-
class ConsoleLogger extends
|
|
79
|
-
context = null;
|
|
80
|
-
logger;
|
|
56
|
+
class ConsoleLogger extends base_logger_1.BaseLogger {
|
|
81
57
|
constructor() {
|
|
82
|
-
super();
|
|
83
|
-
|
|
84
|
-
this.context = 'test';
|
|
85
|
-
this.logger = winston_1.default.createLogger({
|
|
86
|
-
level: logLevel,
|
|
87
|
-
levels: winston_1.default.config.syslog.levels,
|
|
88
|
-
format: customFormat(),
|
|
89
|
-
transports: [consoleTransport],
|
|
90
|
-
handleExceptions: true,
|
|
91
|
-
handleRejections: true,
|
|
92
|
-
exitOnError: false,
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
debug(...messages) {
|
|
96
|
-
this.log('debug', messages);
|
|
97
|
-
}
|
|
98
|
-
info(...messages) {
|
|
99
|
-
this.log('info', messages);
|
|
100
|
-
}
|
|
101
|
-
notice(...messages) {
|
|
102
|
-
this.log('notice', messages);
|
|
103
|
-
}
|
|
104
|
-
warning(...messages) {
|
|
105
|
-
this.log('warning', messages);
|
|
106
|
-
}
|
|
107
|
-
error(...messages) {
|
|
108
|
-
this.log('error', messages);
|
|
109
|
-
}
|
|
110
|
-
critical(...messages) {
|
|
111
|
-
this.log('critical', messages);
|
|
112
|
-
}
|
|
113
|
-
alert(...messages) {
|
|
114
|
-
this.log('alert', messages);
|
|
115
|
-
}
|
|
116
|
-
emergency(...messages) {
|
|
117
|
-
this.log('emergency', messages);
|
|
118
|
-
}
|
|
119
|
-
setContext(context) {
|
|
120
|
-
this.context = context;
|
|
121
|
-
}
|
|
122
|
-
log(level, messages) {
|
|
123
|
-
const mappedLevel = loggerToSyslogMap.get(level) ?? level;
|
|
124
|
-
this.logger.log({
|
|
125
|
-
level: mappedLevel,
|
|
126
|
-
message: (0, node_util_1.format)(...messages),
|
|
127
|
-
context: this.context,
|
|
128
|
-
});
|
|
58
|
+
super('debug', 'test');
|
|
59
|
+
this.addTransport(consoleTransport);
|
|
129
60
|
}
|
|
130
61
|
}
|
|
131
62
|
exports.ConsoleLogger = ConsoleLogger;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"console.logger.js","sourceRoot":"","sources":["../src/console.logger.ts"],"names":[],"mappings":";;;;AAAA,
|
|
1
|
+
{"version":3,"file":"console.logger.js","sourceRoot":"","sources":["../src/console.logger.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ConsoleLogger = exports.MockLogger = exports.Logger = void 0;
|
|
3
|
+
exports.JSONLogger = exports.ConsoleLogger = exports.MockLogger = exports.Logger = void 0;
|
|
4
4
|
var logger_1 = require("./logger");
|
|
5
5
|
Object.defineProperty(exports, "Logger", { enumerable: true, get: function () { return logger_1.Logger; } });
|
|
6
6
|
var mock_logger_1 = require("./mock.logger");
|
|
7
7
|
Object.defineProperty(exports, "MockLogger", { enumerable: true, get: function () { return mock_logger_1.MockLogger; } });
|
|
8
8
|
var console_logger_1 = require("./console.logger");
|
|
9
9
|
Object.defineProperty(exports, "ConsoleLogger", { enumerable: true, get: function () { return console_logger_1.ConsoleLogger; } });
|
|
10
|
+
var json_logger_1 = require("./json.logger");
|
|
11
|
+
Object.defineProperty(exports, "JSONLogger", { enumerable: true, get: function () { return json_logger_1.JSONLogger; } });
|
|
10
12
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AACf,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mCAAkC;AAAzB,gGAAA,MAAM,OAAA;AACf,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,mDAAiD;AAAxC,+GAAA,aAAa,OAAA;AACtB,6CAA2C;AAAlC,yGAAA,UAAU,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.logger.d.ts","sourceRoot":"","sources":["../src/json.logger.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAS3C,qBAAa,UAAW,SAAQ,UAAU;;CAMzC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.JSONLogger = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const winston_1 = tslib_1.__importDefault(require("winston"));
|
|
6
|
+
const base_formatter_1 = require("./base.formatter");
|
|
7
|
+
const base_logger_1 = require("./base.logger");
|
|
8
|
+
const jsonTransport = new winston_1.default.transports.Console({
|
|
9
|
+
format: winston_1.default.format.combine((0, base_formatter_1.baseFormatter)(), winston_1.default.format.json()),
|
|
10
|
+
});
|
|
11
|
+
class JSONLogger extends base_logger_1.BaseLogger {
|
|
12
|
+
constructor() {
|
|
13
|
+
super('debug', 'test');
|
|
14
|
+
this.addTransport(jsonTransport);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.JSONLogger = JSONLogger;
|
|
18
|
+
//# sourceMappingURL=json.logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.logger.js","sourceRoot":"","sources":["../src/json.logger.ts"],"names":[],"mappings":";;;;AAAA,8DAA8B;AAC9B,qDAAiD;AACjD,+CAA2C;AAE3C,MAAM,aAAa,GAAG,IAAI,iBAAO,CAAC,UAAU,CAAC,OAAO,CAAC;IACpD,MAAM,EAAE,iBAAO,CAAC,MAAM,CAAC,OAAO,CAC7B,IAAA,8BAAa,GAAE,EACf,iBAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CACrB;CACD,CAAC,CAAC;AAEH,MAAa,UAAW,SAAQ,wBAAU;IACzC;QACC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAEvB,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;IAClC,CAAC;CACD;AAND,gCAMC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/// <reference types="@hg-ts/types" />
|
|
2
|
+
import winston from 'winston';
|
|
3
|
+
import { LogLevel } from './base.logger';
|
|
4
|
+
export type LogMessage = winston.Logform.TransformableInfo & {
|
|
5
|
+
context: Nullable<string>;
|
|
6
|
+
message: string;
|
|
7
|
+
level: LogLevel;
|
|
8
|
+
process: {
|
|
9
|
+
pid: number;
|
|
10
|
+
title: Nullable<string>;
|
|
11
|
+
};
|
|
12
|
+
timestamp: Date;
|
|
13
|
+
items: unknown[];
|
|
14
|
+
};
|
|
15
|
+
export declare const baseFormatter: winston.Logform.FormatWrap;
|
|
16
|
+
export declare function createFormatter(formatter: (info: LogMessage) => LogMessage): winston.Logform.FormatWrap;
|
|
17
|
+
//# sourceMappingURL=base.formatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.formatter.d.ts","sourceRoot":"","sources":["../src/base.formatter.ts"],"names":[],"mappings":";AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EACN,QAAQ,EAER,MAAM,eAAe,CAAC;AAEvB,MAAM,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,iBAAiB,GAAG;IAC5D,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE;QACR,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;KACxB,CAAC;IACF,SAAS,EAAE,IAAI,CAAC;IAChB,KAAK,EAAE,OAAO,EAAE,CAAC;CACjB,CAAC;AAkBF,eAAO,MAAM,aAAa,4BAoBxB,CAAC;AAEH,wBAAgB,eAAe,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,CAEvG"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import winston from 'winston';
|
|
2
|
+
import { syslogToLoggerMap, } from './base.logger';
|
|
3
|
+
function getLogData(info) {
|
|
4
|
+
const level = syslogToLoggerMap.get(info.level) ?? info.level;
|
|
5
|
+
return {
|
|
6
|
+
level,
|
|
7
|
+
context: info['context'] ?? null,
|
|
8
|
+
process: {
|
|
9
|
+
pid: process.pid,
|
|
10
|
+
title: process.title.endsWith('node') ? null : process.title,
|
|
11
|
+
},
|
|
12
|
+
message: info.message,
|
|
13
|
+
items: info['items'],
|
|
14
|
+
timestamp: new Date(),
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export const baseFormatter = winston.format(info => {
|
|
18
|
+
const logData = getLogData(info);
|
|
19
|
+
logData['items'] = logData.items
|
|
20
|
+
.map(item => {
|
|
21
|
+
if (typeof item === 'bigint') {
|
|
22
|
+
return `${item}n`;
|
|
23
|
+
}
|
|
24
|
+
if (item instanceof Error && !('toJSON' in item)) {
|
|
25
|
+
return {
|
|
26
|
+
name: item.name,
|
|
27
|
+
message: item.message,
|
|
28
|
+
stack: item.stack,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
return item;
|
|
32
|
+
});
|
|
33
|
+
return logData;
|
|
34
|
+
});
|
|
35
|
+
export function createFormatter(formatter) {
|
|
36
|
+
return winston.format(formatter);
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=base.formatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.formatter.js","sourceRoot":"","sources":["../src/base.formatter.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAEN,iBAAiB,GACjB,MAAM,eAAe,CAAC;AAcvB,SAAS,UAAU,CAAC,IAAuC;IAC1D,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAiB,CAAC;IAE1E,OAAO;QACN,KAAK;QACL,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI;QAChC,OAAO,EAAE;YACR,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK;SAC5D;QACD,OAAO,EAAE,IAAI,CAAC,OAAiB;QAC/B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC;QACpB,SAAS,EAAE,IAAI,IAAI,EAAE;KACrB,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;IAClD,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAEjC,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,KAAK;SAC9B,GAAG,CAAC,IAAI,CAAC,EAAE;QACX,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE;YAC7B,OAAO,GAAG,IAAI,GAAG,CAAC;SAClB;QAED,IAAI,IAAI,YAAY,KAAK,IAAI,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,EAAE;YACjD,OAAO;gBACN,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,KAAK,EAAE,IAAI,CAAC,KAAK;aACjB,CAAC;SACF;QAED,OAAO,IAAI,CAAC;IACb,CAAC,CAAC,CAAC;IACJ,OAAO,OAAO,CAAC;AAChB,CAAC,CAAC,CAAC;AAEH,MAAM,UAAU,eAAe,CAAC,SAA2C;IAC1E,OAAO,OAAO,CAAC,MAAM,CAAC,SAAgB,CAAC,CAAC;AACzC,CAAC"}
|