standard-log 10.0.0 → 10.1.0
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 +2 -3
- package/cjs/memory.d.ts +1 -0
- package/cjs/memory.d.ts.map +1 -1
- package/cjs/memory.js +4 -2
- package/cjs/memory.js.map +1 -1
- package/cjs/memory.spec.js +61 -49
- package/cjs/memory.spec.js.map +1 -1
- package/cjs/standardLog.js +1 -2
- package/cjs/standardLog.js.map +1 -1
- package/cjs/standardLog.spec.js +9 -0
- package/cjs/standardLog.spec.js.map +1 -1
- package/dist/standard-log.es5.js +5 -4
- package/dist/standard-log.es5.js.gz +0 -0
- package/dist/standard-log.es5.js.map +1 -1
- package/dist/standard-log.es5.js.map.gz +0 -0
- package/dist/standard-log.esm.js +5 -4
- package/dist/standard-log.esm.js.gz +0 -0
- package/dist/standard-log.esm.js.map +1 -1
- package/dist/standard-log.esm.js.map.gz +0 -0
- package/esm/memory.d.ts +1 -0
- package/esm/memory.d.ts.map +1 -1
- package/esm/memory.js +4 -2
- package/esm/memory.js.map +1 -1
- package/esm/memory.spec.js +63 -51
- package/esm/memory.spec.js.map +1 -1
- package/esm/standardLog.js +1 -2
- package/esm/standardLog.js.map +1 -1
- package/esm/standardLog.spec.js +9 -0
- package/esm/standardLog.spec.js.map +1 -1
- package/package.json +1 -1
- package/ts/memory.ts +4 -1
- package/ts/standardLog.ts +1 -1
package/README.md
CHANGED
|
@@ -197,15 +197,14 @@ But in micro-app situation, the library can be shared, and each application can
|
|
|
197
197
|
In general, using this global instance should be avoided.
|
|
198
198
|
It is the main driving force for 9.0.
|
|
199
199
|
|
|
200
|
-
[`just-func`]: https://github.com/justland/just-func-typescript
|
|
201
|
-
[`standard-log`]: https://github.com/unional/standard-log
|
|
202
200
|
[`standard-log-color`]: https://github.com/unional/standard-log/tree/master/packages/color
|
|
201
|
+
[`standard-log`]: https://github.com/unional/standard-log
|
|
203
202
|
[codecov-image]: https://codecov.io/gh/unional/standard-log/branch/master/graph/badge.svg
|
|
204
203
|
[codecov-url]: https://codecov.io/gh/unional/standard-log
|
|
205
204
|
[downloads-image]: https://img.shields.io/npm/dm/standard-log.svg?style=flat
|
|
206
205
|
[downloads-url]: https://npmjs.org/package/standard-log
|
|
207
206
|
[github-action-url]: https://github.com/unional/standard-log/actions
|
|
208
|
-
[github-nodejs]: https://github.com/unional/standard-log/workflows/
|
|
207
|
+
[github-nodejs]: https://github.com/unional/standard-log/workflows/release/badge.svg
|
|
209
208
|
[npm-image]: https://img.shields.io/npm/v/standard-log.svg?style=flat
|
|
210
209
|
[npm-url]: https://www.npmjs.com/package/standard-log
|
|
211
210
|
[vscode-image]: https://img.shields.io/badge/vscode-ready-green.svg
|
package/cjs/memory.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export declare type MemoryLogReporter = LogReporter<LogEntry> & {
|
|
|
6
6
|
* The message only contains arguments for each log entry.
|
|
7
7
|
*/
|
|
8
8
|
getLogMessage(): string;
|
|
9
|
+
getLogMessages(): string[];
|
|
9
10
|
getLogMessageWithLevel(): string;
|
|
10
11
|
};
|
|
11
12
|
export declare type MemoryLogFormatter = LogFormatter<LogEntry>;
|
package/cjs/memory.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../ts/memory.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEzF,oBAAY,iBAAiB,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG;IACtD,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB;;;OAGG;IACH,aAAa,IAAI,MAAM,CAAC;IACxB,sBAAsB,IAAI,MAAM,CAAA;CACjC,CAAA;AAED,oBAAY,kBAAkB,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;AAEvD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,UAQlD;AAED,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC,QAAQ,CAAC,GAAG,iBAAiB,
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../ts/memory.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEzF,oBAAY,iBAAiB,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG;IACtD,IAAI,EAAE,QAAQ,EAAE,CAAC;IACjB;;;OAGG;IACH,aAAa,IAAI,MAAM,CAAC;IACxB,cAAc,IAAI,MAAM,EAAE,CAAC;IAC3B,sBAAsB,IAAI,MAAM,CAAA;CACjC,CAAA;AAED,oBAAY,kBAAkB,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;AAEvD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,UAQlD;AAED,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE,kBAAkB,CAAC,QAAQ,CAAC,GAAG,iBAAiB,CAqBjG"}
|
package/cjs/memory.js
CHANGED
|
@@ -28,9 +28,11 @@ function createMemoryLogReporter(options) {
|
|
|
28
28
|
logs.push(formatter(entry));
|
|
29
29
|
},
|
|
30
30
|
getLogMessage: function () {
|
|
31
|
+
return this.getLogMessages().join('\n');
|
|
32
|
+
},
|
|
33
|
+
getLogMessages: function () {
|
|
31
34
|
return logs.map(platform_js_1.toInspectLogEntry)
|
|
32
|
-
.map(function (log) { return log.args.join(' '); })
|
|
33
|
-
.join('\n');
|
|
35
|
+
.map(function (log) { return log.args.join(' '); });
|
|
34
36
|
},
|
|
35
37
|
getLogMessageWithLevel: function () { return toMessageWithLevel(logs); }
|
|
36
38
|
});
|
package/cjs/memory.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../ts/memory.ts"],"names":[],"mappings":";;;AAAA,uCAAoC;AACpC,6CAAiD;AACjD,+CAA+C;
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../ts/memory.ts"],"names":[],"mappings":";;;AAAA,uCAAoC;AACpC,6CAAiD;AACjD,+CAA+C;AAgB/C,SAAgB,kBAAkB,CAAC,IAAgB;IACjD,OAAO,IAAI,CAAC,GAAG,CAAC,+BAAiB,CAAC;SAC/B,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,UAAG,IAAA,6BAAc,EAAC,GAAG,CAAC,KAAK,CAAC,cAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAE,EAApD,CAAoD,CAAC;SAChE,IAAI,CAAC,IAAI,CAAC;QACX,gCAAgC;QAChC,uCAAuC;QACvC,2CAA2C;SAC1C,OAAO,CAAC,mEAAmE,EAAE,EAAE,CAAC,CAAA;AACrF,CAAC;AARD,gDAQC;AAED,SAAgB,uBAAuB,CAAC,OAAsC;IACtE,IAAA,KAA4B,IAAA,oBAAQ,EAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAC,CAAW,IAAK,OAAA,CAAC,EAAD,CAAC,EAAE,EAAE,OAAO,CAAC,EAA5F,EAAE,QAAA,EAAE,SAAS,eAAA,EAAE,MAAM,YAAuE,CAAA;IACpG,IAAM,IAAI,GAAe,EAAE,CAAA;IAC3B,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,EAAE,IAAA;QACF,IAAI,SAAS,KAAK,OAAO,SAAS,CAAA,CAAC,CAAC;QACpC,IAAI,MAAM,KAAK,OAAO,MAAM,CAAA,CAAC,CAAC;QAC9B,IAAI,MAAA;QACJ,KAAK,EAAL,UAAM,KAAe;YACnB,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;gBAAE,OAAM;YACpC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAA;QAC7B,CAAC;QACD,aAAa;YACX,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACzC,CAAC;QACD,cAAc;YACZ,OAAO,IAAI,CAAC,GAAG,CAAC,+BAAiB,CAAC;iBAC/B,GAAG,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAlB,CAAkB,CAAC,CAAA;QACnC,CAAC;QACD,sBAAsB,gBAAK,OAAO,kBAAkB,CAAC,IAAI,CAAC,CAAA,CAAC,CAAC;KAC7D,CAAC,CAAA;AACJ,CAAC;AArBD,0DAqBC","sourcesContent":["import { required } from 'type-plus'\nimport { toInspectLogEntry } from './platform.js'\nimport { formatLogLevel } from './formatter.js'\nimport type { LogEntry, LogFormatter, LogReporter, LogReporterOptions } from './types.js'\n\nexport type MemoryLogReporter = LogReporter<LogEntry> & {\n logs: LogEntry[],\n /**\n * Gets a simple log message for testing.\n * The message only contains arguments for each log entry.\n */\n getLogMessage(): string,\n getLogMessages(): string[],\n getLogMessageWithLevel(): string\n}\n\nexport type MemoryLogFormatter = LogFormatter<LogEntry>\n\nexport function toMessageWithLevel(logs: LogEntry[]) {\n return logs.map(toInspectLogEntry)\n .map(log => `${formatLogLevel(log.level)} ${log.args.join(' ')}`)\n .join('\\n')\n // if it has more than this log,\n // we assume it is running under tests,\n // and remove this log to simplify testing.\n .replace(/^\\(WARN\\) already configured for test, ignoring config\\(\\) call\\n/, '')\n}\n\nexport function createMemoryLogReporter(options?: LogReporterOptions<LogEntry>): MemoryLogReporter {\n const { id, formatter, filter } = required({ id: 'memory', formatter: (e: LogEntry) => e }, options)\n const logs: LogEntry[] = []\n return Object.freeze({\n id,\n get formatter() { return formatter },\n get filter() { return filter },\n logs,\n write(entry: LogEntry) {\n if (filter && !filter(entry)) return\n logs.push(formatter(entry))\n },\n getLogMessage() {\n return this.getLogMessages().join('\\n')\n },\n getLogMessages() {\n return logs.map(toInspectLogEntry)\n .map(log => log.args.join(' '))\n },\n getLogMessageWithLevel() { return toMessageWithLevel(logs) }\n })\n}\n"]}
|
package/cjs/memory.spec.js
CHANGED
|
@@ -17,68 +17,80 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
17
17
|
var assertron_1 = __importDefault(require("assertron"));
|
|
18
18
|
var index_js_1 = require("./index.js");
|
|
19
19
|
var testUtil_js_1 = require("./testUtil.js");
|
|
20
|
-
|
|
20
|
+
var mikuIsSinging = { id: 'log', level: 1, args: ['miku', 'is', 'singing'], timestamp: new Date() };
|
|
21
|
+
var lukaIsDancing = { id: 'log', level: 1, args: ['luka', 'is', 'dancing'], timestamp: new Date() };
|
|
22
|
+
var reporter = (0, index_js_1.createMemoryLogReporter)();
|
|
23
|
+
describe(index_js_1.createMemoryLogReporter.name, function () {
|
|
21
24
|
it('filter is readonly', function () {
|
|
22
25
|
var reporter = (0, index_js_1.createMemoryLogReporter)();
|
|
23
26
|
var err = assertron_1.default.throws(function () { reporter.filter = function () { return true; }; }, function (err) { return /only a getter/.test(err); });
|
|
24
27
|
(0, testUtil_js_1.assertSSF)(err, __filename);
|
|
25
28
|
});
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
29
|
+
test('log entries are saved in the `logs` property', function () {
|
|
30
|
+
var reporter = (0, index_js_1.createMemoryLogReporter)();
|
|
31
|
+
var entry = { id: 'log', level: 1, args: ['some messages'], timestamp: new Date() };
|
|
32
|
+
reporter.write(entry);
|
|
33
|
+
expect(reporter.logs).toEqual([entry]);
|
|
34
|
+
});
|
|
35
|
+
test('can override id', function () {
|
|
36
|
+
var reporter = (0, index_js_1.createMemoryLogReporter)({ id: 'custom-id-mem' });
|
|
37
|
+
expect(reporter.id).toBe('custom-id-mem');
|
|
38
|
+
});
|
|
39
|
+
test('can filter', function () {
|
|
40
|
+
var filter = function (entry) { return entry.id !== 'secret'; };
|
|
41
|
+
var reporter = (0, index_js_1.createMemoryLogReporter)({ filter: filter });
|
|
42
|
+
expect(reporter.filter).toBe(filter);
|
|
43
|
+
reporter.write({ id: 'ok', level: 1, args: ['some messages'], timestamp: new Date() });
|
|
44
|
+
reporter.write({ id: 'secret', level: 1, args: ['some messages'], timestamp: new Date() });
|
|
45
|
+
expect(reporter.logs.length).toBe(1);
|
|
46
|
+
});
|
|
47
|
+
test('formatter can be used to pre-process the log', function () {
|
|
48
|
+
var formatter = function (entry) { return (__assign(__assign({}, entry), { args: entry.args.map(function (arg) { return arg === 'secret' ? '<censored>' : arg; }) })); };
|
|
49
|
+
var reporter = (0, index_js_1.createMemoryLogReporter)({ formatter: formatter });
|
|
50
|
+
expect(reporter.formatter).toBe(formatter);
|
|
51
|
+
var entry = { id: 'log', level: 1, args: ['a', 'secret', 'b'], timestamp: new Date() };
|
|
52
|
+
reporter.write(entry);
|
|
53
|
+
expect(reporter.logs[0].args[1]).toBe('<censored>');
|
|
54
|
+
});
|
|
55
|
+
describe(reporter.getLogMessages.name, function () {
|
|
56
|
+
it('maps each log entries to string', function () {
|
|
57
|
+
var r = (0, index_js_1.createMemoryLogReporter)();
|
|
58
|
+
r.write(mikuIsSinging);
|
|
59
|
+
r.write(lukaIsDancing);
|
|
60
|
+
expect(r.getLogMessages()).toEqual([
|
|
61
|
+
'miku is singing',
|
|
62
|
+
'luka is dancing'
|
|
63
|
+
]);
|
|
36
64
|
});
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
reporter.
|
|
42
|
-
reporter.write({ id: 'secret', level: 1, args: ['some messages'], timestamp: new Date() });
|
|
43
|
-
expect(reporter.logs.length).toBe(1);
|
|
65
|
+
});
|
|
66
|
+
describe(reporter.getLogMessage.name, function () {
|
|
67
|
+
test('empty logs returns empty string', function () {
|
|
68
|
+
var reporter = (0, index_js_1.createMemoryLogReporter)();
|
|
69
|
+
expect(reporter.getLogMessage()).toEqual('');
|
|
44
70
|
});
|
|
45
|
-
test('
|
|
46
|
-
var
|
|
47
|
-
var
|
|
48
|
-
expect(reporter.formatter).toBe(formatter);
|
|
49
|
-
var entry = { id: 'log', level: 1, args: ['a', 'secret', 'b'], timestamp: new Date() };
|
|
71
|
+
test('print args', function () {
|
|
72
|
+
var reporter = (0, index_js_1.createMemoryLogReporter)();
|
|
73
|
+
var entry = { id: 'log', level: 1, args: ['miku', 'is', 'singing'], timestamp: new Date() };
|
|
50
74
|
reporter.write(entry);
|
|
51
|
-
expect(reporter.
|
|
75
|
+
expect(reporter.getLogMessage()).toEqual('miku is singing');
|
|
52
76
|
});
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
});
|
|
58
|
-
test('print args', function () {
|
|
59
|
-
var reporter = (0, index_js_1.createMemoryLogReporter)();
|
|
60
|
-
var entry = { id: 'log', level: 1, args: ['miku', 'is', 'singing'], timestamp: new Date() };
|
|
61
|
-
reporter.write(entry);
|
|
62
|
-
expect(reporter.getLogMessage()).toEqual('miku is singing');
|
|
63
|
-
});
|
|
64
|
-
test('print object arg', function () {
|
|
65
|
-
var reporter = (0, index_js_1.createMemoryLogReporter)();
|
|
66
|
-
var entry = { id: 'log', level: 1, args: [{ 'miku': 'sing' }], timestamp: new Date() };
|
|
67
|
-
reporter.write(entry);
|
|
68
|
-
expect(reporter.getLogMessage()).toEqual("{ miku: 'sing' }");
|
|
69
|
-
});
|
|
77
|
+
test('print object arg', function () {
|
|
78
|
+
var reporter = (0, index_js_1.createMemoryLogReporter)();
|
|
79
|
+
var entry = { id: 'log', level: 1, args: [{ 'miku': 'sing' }], timestamp: new Date() };
|
|
80
|
+
reporter.write(entry);
|
|
81
|
+
expect(reporter.getLogMessage()).toEqual("{ miku: 'sing' }");
|
|
70
82
|
});
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
83
|
+
});
|
|
84
|
+
describe(reporter.getLogMessageWithLevel.name, function () {
|
|
85
|
+
test('print with level', function () {
|
|
86
|
+
var reporter = (0, index_js_1.createMemoryLogReporter)();
|
|
87
|
+
reporter.write({ id: 'log', level: index_js_1.logLevels.info, args: ['msg 1'], timestamp: new Date() });
|
|
88
|
+
reporter.write({ id: 'log', level: index_js_1.logLevels.warn, args: ['msg 2'], timestamp: new Date() });
|
|
89
|
+
expect(reporter.getLogMessageWithLevel()).toEqual("(INFO) msg 1\n(WARN) msg 2");
|
|
78
90
|
});
|
|
79
91
|
});
|
|
80
92
|
});
|
|
81
|
-
describe(
|
|
93
|
+
describe(testUtil_js_1.logEntriesToString.name, function () {
|
|
82
94
|
test('convert log entries to string', function () {
|
|
83
95
|
var timestamp = new Date(2019, 6);
|
|
84
96
|
var actual = (0, testUtil_js_1.logEntriesToString)([
|
package/cjs/memory.spec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.spec.js","sourceRoot":"","sources":["../ts/memory.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import a from 'assertron'\nimport { createMemoryLogReporter, LogEntry, LogFilter, LogFormatter, logLevels } from './index.js'\nimport { assertSSF, logEntriesToString } from './testUtil.js'\n\ndescribe('MemoryLogReporter', () => {\n it('filter is readonly', () => {\n const reporter = createMemoryLogReporter()\n const err = a.throws(() => { (reporter as any).filter = () => true }, err => /only a getter/.test(err))\n\n assertSSF(err, __filename)\n })\n\n describe('unit tests', () => {\n test('log entries are saved in the `logs` property', () => {\n const reporter = createMemoryLogReporter()\n const entry = { id: 'log', level: 1, args: ['some messages'], timestamp: new Date() }\n reporter.write(entry)\n expect(reporter.logs).toEqual([entry])\n })\n\n test('can override id', () => {\n const reporter = createMemoryLogReporter({ id: 'custom-id-mem' })\n expect(reporter.id).toBe('custom-id-mem')\n })\n\n test('can filter', () => {\n const filter: LogFilter = (entry) => entry.id !== 'secret'\n const reporter = createMemoryLogReporter({ filter })\n expect(reporter.filter).toBe(filter)\n reporter.write({ id: 'ok', level: 1, args: ['some messages'], timestamp: new Date() })\n reporter.write({ id: 'secret', level: 1, args: ['some messages'], timestamp: new Date() })\n expect(reporter.logs.length).toBe(1)\n })\n\n test('formatter can be used to pre-process the log', () => {\n const formatter: LogFormatter<LogEntry> = (entry) => ({\n ...entry,\n args: entry.args.map(arg => arg === 'secret' ? '<censored>' : arg)\n })\n const reporter = createMemoryLogReporter({ formatter })\n expect(reporter.formatter).toBe(formatter)\n\n const entry = { id: 'log', level: 1, args: ['a', 'secret', 'b'], timestamp: new Date() }\n reporter.write(entry)\n\n expect(reporter.logs[0].args[1]).toBe('<censored>')\n })\n\n describe('getLogMessages()', () => {\n test('empty logs returns empty string', () => {\n const reporter = createMemoryLogReporter()\n\n expect(reporter.getLogMessage()).toEqual('')\n })\n\n test('print args', () => {\n const reporter = createMemoryLogReporter()\n const entry = { id: 'log', level: 1, args: ['miku', 'is', 'singing'], timestamp: new Date() }\n reporter.write(entry)\n expect(reporter.getLogMessage()).toEqual('miku is singing')\n })\n\n test('print object arg', () => {\n const reporter = createMemoryLogReporter()\n const entry = { id: 'log', level: 1, args: [{ 'miku': 'sing' }], timestamp: new Date() }\n reporter.write(entry)\n expect(reporter.getLogMessage()).toEqual(\"{ miku: 'sing' }\")\n })\n })\n\n describe('getLogMessageWithLevel', () => {\n test('print with level', () => {\n const reporter = createMemoryLogReporter()\n reporter.write({ id: 'log', level: logLevels.info, args: ['msg 1'], timestamp: new Date() })\n reporter.write({ id: 'log', level: logLevels.warn, args: ['msg 2'], timestamp: new Date() })\n expect(reporter.getLogMessageWithLevel()).toEqual(`(INFO) msg 1\\n(WARN) msg 2`)\n })\n })\n })\n})\n\ndescribe('logEntriesToString()', () => {\n test('convert log entries to string', () => {\n const timestamp = new Date(2019, 6)\n const actual = logEntriesToString([\n { id: 'log', level: logLevels.emergency, args: ['emergency'], timestamp },\n { id: 'log', level: logLevels.critical, args: ['critical'], timestamp },\n { id: 'log', level: logLevels.alert, args: ['alert'], timestamp },\n { id: 'log', level: logLevels.error, args: ['error'], timestamp },\n { id: 'log', level: logLevels.warn, args: ['warn'], timestamp },\n { id: 'log', level: logLevels.notice, args: ['notice'], timestamp },\n { id: 'log', level: logLevels.info, args: ['info'], timestamp },\n { id: 'log', level: logLevels.debug, args: ['debug'], timestamp },\n { id: 'log', level: logLevels.trace, args: ['trace'], timestamp }\n ])\n\n const iso = timestamp.toISOString()\n expect(actual).toEqual(`${iso},log,(EMERGENCY),emergency\n${iso},log,(CRITICAL),critical\n${iso},log,(ALERT),alert\n${iso},log,(ERROR),error\n${iso},log,(WARN),warn\n${iso},log,(NOTICE),notice\n${iso},log,(INFO),info\n${iso},log,(DEBUG),debug\n${iso},log,(TRACE),trace`)\n })\n\n test('print out object', () => {\n const timestamp = new Date(2021, 4)\n const actual = logEntriesToString([\n { id: 'log', level: logLevels.info, args: ['a', { a: 1 }], timestamp }\n ])\n\n const iso = timestamp.toISOString()\n expect(actual).toEqual(`${iso},log,(INFO),a,{ a: 1 }`)\n })\n\n test('print out array', () => {\n const timestamp = new Date(2021, 4)\n const actual = logEntriesToString([\n { id: 'log', level: logLevels.info, args: ['a', [1, 2, 3]], timestamp }\n ])\n\n const iso = timestamp.toISOString()\n expect(actual).toEqual(`${iso},log,(INFO),a,[ 1, 2, 3 ]`)\n })\n})\n"]}
|
|
1
|
+
{"version":3,"file":"memory.spec.js","sourceRoot":"","sources":["../ts/memory.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import a from 'assertron'\nimport { createMemoryLogReporter, LogEntry, LogFilter, LogFormatter, logLevels } from './index.js'\nimport { assertSSF, logEntriesToString } from './testUtil.js'\n\nconst mikuIsSinging = { id: 'log', level: 1, args: ['miku', 'is', 'singing'], timestamp: new Date() }\nconst lukaIsDancing = { id: 'log', level: 1, args: ['luka', 'is', 'dancing'], timestamp: new Date() }\nconst reporter = createMemoryLogReporter()\n\ndescribe(createMemoryLogReporter.name, () => {\n it('filter is readonly', () => {\n const reporter = createMemoryLogReporter()\n const err = a.throws(() => { (reporter as any).filter = () => true }, err => /only a getter/.test(err))\n\n assertSSF(err, __filename)\n })\n\n test('log entries are saved in the `logs` property', () => {\n const reporter = createMemoryLogReporter()\n const entry = { id: 'log', level: 1, args: ['some messages'], timestamp: new Date() }\n reporter.write(entry)\n expect(reporter.logs).toEqual([entry])\n })\n\n test('can override id', () => {\n const reporter = createMemoryLogReporter({ id: 'custom-id-mem' })\n expect(reporter.id).toBe('custom-id-mem')\n })\n\n test('can filter', () => {\n const filter: LogFilter = (entry) => entry.id !== 'secret'\n const reporter = createMemoryLogReporter({ filter })\n expect(reporter.filter).toBe(filter)\n reporter.write({ id: 'ok', level: 1, args: ['some messages'], timestamp: new Date() })\n reporter.write({ id: 'secret', level: 1, args: ['some messages'], timestamp: new Date() })\n expect(reporter.logs.length).toBe(1)\n })\n\n test('formatter can be used to pre-process the log', () => {\n const formatter: LogFormatter<LogEntry> = (entry) => ({\n ...entry,\n args: entry.args.map(arg => arg === 'secret' ? '<censored>' : arg)\n })\n const reporter = createMemoryLogReporter({ formatter })\n expect(reporter.formatter).toBe(formatter)\n\n const entry = { id: 'log', level: 1, args: ['a', 'secret', 'b'], timestamp: new Date() }\n reporter.write(entry)\n\n expect(reporter.logs[0].args[1]).toBe('<censored>')\n })\n\n describe(reporter.getLogMessages.name, () => {\n it('maps each log entries to string', () => {\n const r = createMemoryLogReporter()\n r.write(mikuIsSinging)\n r.write(lukaIsDancing)\n expect(r.getLogMessages()).toEqual([\n 'miku is singing',\n 'luka is dancing'\n ])\n })\n })\n describe(reporter.getLogMessage.name, () => {\n test('empty logs returns empty string', () => {\n const reporter = createMemoryLogReporter()\n\n expect(reporter.getLogMessage()).toEqual('')\n })\n\n test('print args', () => {\n const reporter = createMemoryLogReporter()\n const entry = { id: 'log', level: 1, args: ['miku', 'is', 'singing'], timestamp: new Date() }\n reporter.write(entry)\n expect(reporter.getLogMessage()).toEqual('miku is singing')\n })\n\n test('print object arg', () => {\n const reporter = createMemoryLogReporter()\n const entry = { id: 'log', level: 1, args: [{ 'miku': 'sing' }], timestamp: new Date() }\n reporter.write(entry)\n expect(reporter.getLogMessage()).toEqual(\"{ miku: 'sing' }\")\n })\n })\n describe(reporter.getLogMessageWithLevel.name, () => {\n test('print with level', () => {\n const reporter = createMemoryLogReporter()\n reporter.write({ id: 'log', level: logLevels.info, args: ['msg 1'], timestamp: new Date() })\n reporter.write({ id: 'log', level: logLevels.warn, args: ['msg 2'], timestamp: new Date() })\n expect(reporter.getLogMessageWithLevel()).toEqual(`(INFO) msg 1\\n(WARN) msg 2`)\n })\n })\n})\n\ndescribe(logEntriesToString.name, () => {\n test('convert log entries to string', () => {\n const timestamp = new Date(2019, 6)\n const actual = logEntriesToString([\n { id: 'log', level: logLevels.emergency, args: ['emergency'], timestamp },\n { id: 'log', level: logLevels.critical, args: ['critical'], timestamp },\n { id: 'log', level: logLevels.alert, args: ['alert'], timestamp },\n { id: 'log', level: logLevels.error, args: ['error'], timestamp },\n { id: 'log', level: logLevels.warn, args: ['warn'], timestamp },\n { id: 'log', level: logLevels.notice, args: ['notice'], timestamp },\n { id: 'log', level: logLevels.info, args: ['info'], timestamp },\n { id: 'log', level: logLevels.debug, args: ['debug'], timestamp },\n { id: 'log', level: logLevels.trace, args: ['trace'], timestamp }\n ])\n\n const iso = timestamp.toISOString()\n expect(actual).toEqual(`${iso},log,(EMERGENCY),emergency\n${iso},log,(CRITICAL),critical\n${iso},log,(ALERT),alert\n${iso},log,(ERROR),error\n${iso},log,(WARN),warn\n${iso},log,(NOTICE),notice\n${iso},log,(INFO),info\n${iso},log,(DEBUG),debug\n${iso},log,(TRACE),trace`)\n })\n\n test('print out object', () => {\n const timestamp = new Date(2021, 4)\n const actual = logEntriesToString([\n { id: 'log', level: logLevels.info, args: ['a', { a: 1 }], timestamp }\n ])\n\n const iso = timestamp.toISOString()\n expect(actual).toEqual(`${iso},log,(INFO),a,{ a: 1 }`)\n })\n\n test('print out array', () => {\n const timestamp = new Date(2021, 4)\n const actual = logEntriesToString([\n { id: 'log', level: logLevels.info, args: ['a', [1, 2, 3]], timestamp }\n ])\n\n const iso = timestamp.toISOString()\n expect(actual).toEqual(`${iso},log,(INFO),a,[ 1, 2, 3 ]`)\n })\n})\n"]}
|
package/cjs/standardLog.js
CHANGED
|
@@ -86,8 +86,7 @@ function configGlobal(options) {
|
|
|
86
86
|
}
|
|
87
87
|
if (options.reporters) {
|
|
88
88
|
var reporters = exports.ctx.gsl.store.reporters;
|
|
89
|
-
|
|
90
|
-
reporters.pop();
|
|
89
|
+
reporters.length = 0;
|
|
91
90
|
reporters.push.apply(reporters, options.reporters);
|
|
92
91
|
}
|
|
93
92
|
}
|
package/cjs/standardLog.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standardLog.js","sourceRoot":"","sources":["../ts/standardLog.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,uCAA4C;AAC5C,yCAA0C;AAC1C,+CAA0C;AAC1C,6CAAwD;AACxD,yCAAwE;AAaxE,SAAgB,iBAAiB,CAC/B,OAA+B;IAE/B,IAAM,OAAO,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAA;IACjD,IAAI,CAAC,WAAG,CAAC,GAAG;QAAE,WAAG,CAAC,GAAG,GAAG,OAAc,CAAA;IACtC,OAAO,OAAO,CAAC,WAAW,CAAA;AAC5B,CAAC;AAND,8CAMC;AAED,SAAgB,wBAAwB,CACtC,OAA+B;IAE/B,IAAM,KAAK,GAAG,IAAA,4BAAc,EAAC,IAAA,oBAAQ,EAAC,EAAE,QAAQ,EAAE,wBAAS,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA;IAE7E,OAAO;QACL,KAAK,OAAA;QACL,WAAW,EAAE;YACX,IAAI,QAAQ,KAAK,OAAO,KAAK,CAAC,QAAQ,CAAA,CAAC,CAAC;YAExC,cAAc,EAAd,UAAe,KAAa;gBAC1B,OAAO,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;YAC3C,CAAC;YACD,UAAU,EAAV,UAAW,IAAY;gBACrB,OAAO,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;YAC3C,CAAC;YACD,SAAS,EAAT,UAAU,EAAU,EAAE,OAAuB;gBAC3C,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;oBAAE,OAAO,KAAK,CAAC,OAAO,CAAC,EAAE,CAAQ,CAAA;gBACtD,OAAO,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,IAAA,wBAAY,EAAC,KAAK,EAAE,EAAE,aAAI,GAAG,EAAE,IAAI,CAAC,SAAS,IAAK,OAAO,EAAU,CAAA;YAChG,CAAC;SACF;KACF,CAAA;AACH,CAAC;AAtBD,4DAsBC;AAID,SAAgB,wBAAwB,CACtC,QAAoC;IAApC,yBAAA,EAAA,WAAqB,wBAAS,CAAC,KAAK;IAEpC,IAAM,QAAQ,GAAG,IAAA,mCAAuB,GAAE,CAAA;IAC1C,IAAM,WAAW,GAAG,iBAAiB,CAAI,EAAE,SAAS,EAAE,CAAC,QAAQ,CAAC,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAA;IAC7E,6BAAY,WAAW,KAAE,QAAQ,UAAA,IAAE;AACrC,CAAC;AAND,4DAMC;AAMD,SAAgB,YAAY,CAAI,KAAc;IAAE,cAAiB;SAAjB,UAAiB,EAAjB,qBAAiB,EAAjB,IAAiB;QAAjB,6BAAiB;;IAC/D,IAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,EAAP,CAAO,CAAC,CAAA;IACzC,IAAI,CAAC,OAAO,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,GAAG,wBAAS,CAAC,IAAI,EAAxB,CAAwB,CAAC,CAAA;IAC3C,IAAM,MAAM,GAAG,KAAK,EAAE,CAAA;IACtB,IAAI,CAAC,OAAO,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,EAAvB,CAAuB,CAAC,CAAA;IAC/C,OAAO,MAAM,CAAA;AACf,CAAC;AAND,oCAMC;AAED,SAAgB,SAAS,CAAoC,EAAU,EAAE,OAAuB;IAC9F,OAAO,WAAW,EAAK,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAA;AAChD,CAAC;AAFD,8BAEC;AAEY,QAAA,GAAG,GAGZ,IAAA,kBAAM,GAAE,CAAA;AAEZ,SAAS,WAAW;IAClB,IAAI,CAAC,WAAG,CAAC,GAAG;QAAE,WAAG,CAAC,GAAG,GAAG,wBAAwB,EAAE,CAAA;IAElD,OAAO,WAAG,CAAC,GAAI,CAAC,WAAqC,CAAA;AACvD,CAAC;AAED,SAAgB,YAAY,CAAC,OAAiD;;IAC5E,IAAI,WAAG,CAAC,UAAU,EAAE;QAClB,IAAM,GAAG,GAAG,MAAA,WAAG,CAAC,GAAG,0CAAE,WAAW,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;QAC1D,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,IAAI,CAAC,kJAAkJ,CAAC,CAAA;KAC9J;IAED,IAAI,WAAG,CAAC,GAAG,EAAE;QACX,IAAI,OAAO,CAAC,QAAQ,EAAE;YACpB,WAAG,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;SAC1C;QACD,IAAI,OAAO,CAAC,SAAS,EAAE;YACrB,IAAM,SAAS,GAAG,WAAG,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAA;YACzC,
|
|
1
|
+
{"version":3,"file":"standardLog.js","sourceRoot":"","sources":["../ts/standardLog.ts"],"names":[],"mappings":"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","sourcesContent":["import { record, required } from 'type-plus'\nimport { createLogger } from './logger.js'\nimport { logLevels } from './logLevels.js'\nimport { createLogStore, LogStore } from './logStore.js'\nimport { createMemoryLogReporter, MemoryLogReporter } from './memory.js'\nimport type { Logger, LoggerOptions, LogLevel, LogMethodNames, StandardLogOptions } from './types.js'\n\nexport interface StandardLogInstance<N extends string = LogMethodNames> {\n logLevel: number,\n toLogLevelName(level: number): string,\n toLogLevel(name: N): number,\n getLogger(id: string, options?: LoggerOptions): Logger<N | LogMethodNames>\n}\n\nexport interface StandardLog<N extends string = LogMethodNames> extends Readonly<StandardLogInstance<N>> {\n}\n\nexport function createStandardLog<N extends string = LogMethodNames>(\n options?: StandardLogOptions<N>\n): StandardLog<N> {\n const closure = createStandardLogClosure(options)\n if (!ctx.gsl) ctx.gsl = closure as any\n return closure.standardLog\n}\n\nexport function createStandardLogClosure<N extends string = LogMethodNames>(\n options?: StandardLogOptions<N>\n): { store: LogStore, standardLog: StandardLog<N> } {\n const store = createLogStore(required({ logLevel: logLevels.info }, options))\n\n return {\n store,\n standardLog: {\n get logLevel() { return store.logLevel },\n\n toLogLevelName(level: number) {\n return store.logLevelStore.getName(level)\n },\n toLogLevel(name: string) {\n return store.logLevelStore.getLevel(name)\n },\n getLogger(id: string, options?: LoggerOptions) {\n if (store.loggers[id]) return store.loggers[id] as any\n return store.loggers[id] = createLogger(store, id, { ssf: this.getLogger, ...options }) as any\n }\n }\n }\n}\n\nexport type StandardLogForTest<N extends string = LogMethodNames> = StandardLog<N> & { reporter: MemoryLogReporter }\n\nexport function createStandardLogForTest<N extends string = LogMethodNames>(\n logLevel: LogLevel = logLevels.debug\n): StandardLogForTest<N> {\n const reporter = createMemoryLogReporter()\n const standardLog = createStandardLog<N>({ reporters: [reporter], logLevel })\n return { ...standardLog, reporter }\n}\n\n/**\n * Suppress logging within the code block.\n */\nexport function suppressLogs<R>(block: () => R, log: Logger, ...logs: Logger[]): R\nexport function suppressLogs<R>(block: () => R, ...logs: Logger[]): R {\n const origLevels = logs.map(l => l.level)\n logs.forEach(l => l.level = logLevels.none)\n const result = block()\n logs.forEach((l, i) => l.level = origLevels[i])\n return result\n}\n\nexport function getLogger<N extends string = LogMethodNames>(id: string, options?: LoggerOptions) {\n return getGlobalSL<N>().getLogger(id, options)\n}\n\nexport const ctx: {\n configured?: boolean,\n gsl?: { store: LogStore, standardLog: StandardLogInstance<LogMethodNames> }\n} = record()\n\nfunction getGlobalSL<N extends string = LogMethodNames>(): StandardLogInstance<N> {\n if (!ctx.gsl) ctx.gsl = createStandardLogClosure()\n\n return ctx.gsl!.standardLog as StandardLogInstance<N>\n}\n\nexport function configGlobal(options: Omit<StandardLogOptions, 'customLevels'>) {\n if (ctx.configured) {\n const log = ctx.gsl?.standardLog.getLogger('standard-log')\n log?.warn('configGlobal() is being called more than once. Please make sure this is expected. Application should use `createStandardLog()` most of the time.')\n }\n\n if (ctx.gsl) {\n if (options.logLevel) {\n ctx.gsl.store.logLevel = options.logLevel\n }\n if (options.reporters) {\n const reporters = ctx.gsl.store.reporters\n reporters.length = 0\n reporters.push(...options.reporters)\n }\n }\n else {\n ctx.gsl = createStandardLogClosure(options)\n }\n ctx.configured = true\n}\n"]}
|
package/cjs/standardLog.spec.js
CHANGED
|
@@ -598,5 +598,14 @@ describe('configGlobal()', function () {
|
|
|
598
598
|
(0, standardLog_js_1.configGlobal)({ reporters: [] });
|
|
599
599
|
assertron_1.assertron.satisfies(mem.logs, [{ id: 'standard-log', level: logLevels_js_1.logLevels.warn, args: [/being called more than once/] }]);
|
|
600
600
|
});
|
|
601
|
+
it('remove existing reporter', function () {
|
|
602
|
+
var _a;
|
|
603
|
+
var log = (0, index_js_1.getLogger)('default');
|
|
604
|
+
log.info('from global log, expected to be printed');
|
|
605
|
+
var mem = (0, memory_js_1.createMemoryLogReporter)();
|
|
606
|
+
(0, standardLog_js_1.configGlobal)({ logLevel: logLevels_js_1.logLevels.error, reporters: [mem] });
|
|
607
|
+
var reporters = (_a = standardLog_js_1.ctx.gsl) === null || _a === void 0 ? void 0 : _a.store.reporters;
|
|
608
|
+
expect(reporters).toEqual([mem]);
|
|
609
|
+
});
|
|
601
610
|
});
|
|
602
611
|
//# sourceMappingURL=standardLog.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standardLog.spec.js","sourceRoot":"","sources":["../ts/standardLog.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { assertron as a } from 'assertron'\nimport { InvalidId } from './errors.js'\nimport { createStandardLog, createStandardLogForTest, getLogger, StandardLog, suppressLogs } from './index.js'\nimport { logLevels, toLogLevelName } from './logLevels.js'\nimport { createMemoryLogReporter } from './memory.js'\nimport { configGlobal, ctx, StandardLogForTest } from './standardLog.js'\nimport { assertSSF, wrapTest } from './testUtil.js'\nimport { LogEntry, Logger, LoggerOptions, LogMethodNames, StandardLogOptions } from './types.js'\n\ndescribe('createStandardLog()', () => {\n describe('logLevel', () => {\n it('is default to info', () => {\n const actual = createStandardLog()\n expect(actual.logLevel).toBe(logLevels.info)\n })\n it('is readonly', () => {\n const actual = createStandardLog()\n a.throws(() => (actual as any).logLevel = logLevels.planck, err => /only a getter/.test(err))\n })\n it('set logLevel from options', () => {\n const actual = createStandardLog({ logLevel: logLevels.planck })\n expect(actual.logLevel).toBe(logLevels.planck)\n })\n })\n\n describe('custom levels', () => {\n it('can define custom levels', () => {\n const actual = createStandardLog({ customLevels: { urgent: 80 } })\n\n expect(actual.toLogLevelName(80)).toBe('urgent')\n })\n })\n\n describe('reporters', () => {\n it('can specify reporter', () => {\n const mem = createMemoryLogReporter()\n const sl = createStandardLog({ reporters: [mem] })\n const log = sl.getLogger('x')\n log.info('abc')\n expect(mem.logs.length).toBe(1)\n })\n })\n\n describe('related to global', () => {\n beforeEach(() => {\n ctx.gsl = undefined\n ctx.configured = false\n })\n it('will affect getLogger() if configGlobal() is not called', () => {\n createStandardLog({ logLevel: logLevels.planck })\n expect(ctx.gsl?.standardLog.logLevel).toBe(logLevels.planck)\n })\n })\n})\n\ndescribe('createStandardLogForTest()', () => {\n it('returns with memory reporter', () => {\n const { reporter } = createStandardLogForTest()\n expect(reporter.getLogMessageWithLevel()).toBe('')\n })\n\n it('defaults to debug', () => {\n const store = createStandardLogForTest()\n expect(store.logLevel).toBe(logLevels.debug)\n })\n})\n\ndescribe('standardLog.getLogger()', () => {\n it('supports id with alphanumeric and :_-.', () => {\n const sl = createStandardLog()\n sl.getLogger('abcdefghijklmnopqrstuvwxyz:-_.1234567890')\n })\n it('supports id with unicode', () => {\n const sl = createStandardLog()\n sl.getLogger('ミク香港')\n })\n it('supports id with @, \\\\ and /', () => {\n const sl = createStandardLog()\n sl.getLogger('@unional/fixture')\n sl.getLogger(`a\\\\b\\\\c`)\n })\n it.each('`~!#$%^&*()=+|[]{}<>,?'.split(''))('throws if id has unsupported character %s', (char: string) => {\n const sl = createStandardLog()\n a.throws(() => sl.getLogger(char), InvalidId)\n })\n it('throw InvalidId with ssf to the call site', () => {\n const sl = createStandardLog()\n const err = a.throws(() => sl.getLogger('!'), InvalidId)\n\n assertSSF(err, __filename)\n })\n test('id is readonly', () => {\n const sl = createStandardLog()\n const log: any = sl.getLogger('id is readonly')\n a.throws(() => log.id = 'b')\n })\n\n test('get logger with same name gets the same instance', () => {\n const sl = createStandardLog()\n const expected = sl.getLogger('same-inst')\n const actual = sl.getLogger('same-inst')\n expect(actual).toBe(expected)\n })\n\n it('can specify local log level', () => {\n const sl = createStandardLog()\n const log = sl.getLogger('local', { level: logLevels.trace })\n expect(log.level).toBe(logLevels.trace)\n })\n\n test('new logger will get custom level', () => {\n const sl = createStandardLog({ customLevels: { 'to_logger': 1234 } })\n const actual = sl.getLogger('to_logger_logger')\n expect(typeof actual.to_logger).toBe('function')\n })\n\n it('needs to cast Logger when wrapped', () => {\n function wrapper<N extends string = LogMethodNames>(options: StandardLogOptions<N>) {\n const sl = createStandardLog<N>(options)\n const log = sl.getLogger('local')\n expect(log.info).toBeDefined()\n return sl\n }\n\n const sl = wrapper({ customLevels: { 'cust': 123 } })\n const actual = sl.getLogger('c')\n expect(actual.cust).toBeDefined()\n\n // make sure the logger outside also get default log methods\n expect(actual.error).toBeDefined()\n })\n\n describe('log levels', () => {\n async function assertLoggedAtLevel(sl: StandardLogForTest, method: LogMethodNames, level: number) {\n const log = sl.getLogger(method)\n const msg = `should log on level: ${level}`;\n (log as any)[method](msg)\n a.satisfies(sl.reporter.logs, [{ id: method, level: sl.toLogLevel(method), args: [msg] }])\n }\n\n async function assertNotLoggedAtLevel(sl: StandardLogForTest, method: string, level: number) {\n const log = sl.getLogger(method);\n (log as any)[method](`should not log on level: ${level}`)\n expect(sl.reporter.logs.length).toBe(0)\n }\n\n async function assertLoggedAtLocalLevel(sl: StandardLogForTest, method: LogMethodNames, localLevel: number) {\n const log = sl.getLogger(method, { level: localLevel })\n\n const msg = `should log on level: ${localLevel}`;\n (log as any)[method](msg)\n a.satisfies(sl.reporter.logs, [{ id: log.id, level: sl.toLogLevel(method), args: [msg] }])\n }\n\n async function assertNotLoggedAtLocalLevel(sl: StandardLogForTest, method: string, localLevel: number) {\n const log = sl.getLogger(method, { level: localLevel });\n (log as any)[method](`should not log on level: ${localLevel}`)\n expect(sl.reporter.logs.length).toBe(0)\n }\n\n async function assertLoggedAtCallLevel(sl: StandardLogForTest, method: string, callLevel: number) {\n const log = sl.getLogger(method)\n let actual = false\n log.on(callLevel, () => actual = true)\n expect(actual).toBe(true)\n }\n\n async function assertNotLoggedAtCallLevel(sl: StandardLogForTest, method: string, callLevel: number, actualLevel: number) {\n const log = sl.getLogger(method)\n log.on(callLevel, () => { throw new Error(`should not log at level ${actualLevel}`) })\n }\n\n async function assertLoggedAtCallLevelOverrideLocalLevel(sl: StandardLogForTest, method: string, localLevel: number, callLevel: number) {\n const log = sl.getLogger(method, { level: localLevel })\n let actual = false\n log.on(callLevel, () => actual = true)\n expect(actual).toBe(true)\n }\n\n async function assertNotLoggedAtCallLevelOverrideLocalLevel(sl: StandardLogForTest, method: string, localLevel: number, callLevel: number) {\n const log = sl.getLogger(method, { level: localLevel })\n log.on(callLevel, () => { throw new Error(`should not log at level ${localLevel}`) })\n }\n\n const shouldLog = wrapTest((test) => (method: LogMethodNames, level: number) => {\n const sl = createStandardLogForTest(level)\n const name = sl.toLogLevelName(level)\n test(`${method}() should log on level: ${name} (${level})`, () => {\n return assertLoggedAtLevel(sl, method, level)\n })\n })\n const shouldNotLog = wrapTest((test) => (method: string, level: number) => {\n const sl = createStandardLogForTest(level)\n const name = sl.toLogLevelName(level)\n test(`${method}() should not log on level: ${name} (${level})`, () => {\n return assertNotLoggedAtLevel(sl, method, level)\n })\n })\n\n const shouldLogWithLocalLevelOverride = wrapTest((test) => (method: LogMethodNames, localLevel: number) => {\n const localName = toLogLevelName(localLevel);\n [logLevels.none, logLevels.error, logLevels.warn, logLevels.info, logLevels.debug].forEach(globalLevel => {\n const globalName = toLogLevelName(globalLevel) || 'none'\n test(`${method}() should log on local level: ${localName} (${localLevel}) while global level: ${globalName} (${globalLevel})`, () => {\n const sl = createStandardLogForTest(globalLevel)\n return assertLoggedAtLocalLevel(sl, method, localLevel)\n })\n })\n })\n\n const shouldNotLogWithLocalLevelOverride = wrapTest((test) => (method: string, localLevel: number) => {\n const localName = toLogLevelName(localLevel);\n\n [logLevels.none, logLevels.error, logLevels.warn, logLevels.info, logLevels.debug].forEach(globalLevel => {\n const globalName = toLogLevelName(globalLevel) || 'none'\n test(`${method}() should not log on local level: ${localName} (${localLevel}) while global level: ${globalName} (${globalLevel})`, () => {\n const sl = createStandardLogForTest(globalLevel)\n return assertNotLoggedAtLocalLevel(sl, method, localLevel)\n })\n })\n })\n\n const shouldCallLogFunction = wrapTest((test) => (callLevel: number, actualLevel: number) => {\n const method = toLogLevelName(callLevel)\n const name = toLogLevelName(actualLevel)\n test(`${method}() should call log function on level: ${name} (${actualLevel})`, () => {\n const sl = createStandardLogForTest(actualLevel)\n return assertLoggedAtCallLevel(sl, method, callLevel)\n })\n })\n\n const shouldNotCallLogFunction = wrapTest((test) => (callLevel: number, actualLevel: number) => {\n const method = toLogLevelName(callLevel)\n const name = toLogLevelName(actualLevel)\n test(`${method}() should not call log function on level: ${name} (${actualLevel})`, () => {\n const sl = createStandardLogForTest(actualLevel)\n return assertNotLoggedAtCallLevel(sl, method, callLevel, actualLevel)\n })\n })\n\n const shouldCallLogFunctionWithLocalLevelOverride = wrapTest((test) => (callLevel: number, localLevel: number) => {\n const method = toLogLevelName(callLevel)\n const localName = toLogLevelName(localLevel);\n\n [logLevels.none, logLevels.error, logLevels.warn, logLevels.info, logLevels.debug].forEach(globalLevel => {\n const globalName = toLogLevelName(globalLevel) || 'none'\n test(`${method}() should log on local level: ${localName} (${localLevel}) while global level: ${globalName} (${globalLevel})`, () => {\n const sl = createStandardLogForTest(globalLevel)\n return assertLoggedAtCallLevelOverrideLocalLevel(sl, method, localLevel, callLevel)\n })\n })\n })\n\n const shouldNotCallLogFunctionWithLocalLevelOverride = wrapTest((test) => (callLevel: number, localLevel: number) => {\n const method = toLogLevelName(callLevel)\n const localName = toLogLevelName(localLevel);\n\n [logLevels.none, logLevels.error, logLevels.warn, logLevels.info, logLevels.debug].forEach(globalLevel => {\n const globalName = toLogLevelName(globalLevel) || 'none'\n test(`${method}() should not log on local level: ${localName} (${localLevel}) while global level: ${globalName} (${globalLevel})`, () => {\n const sl = createStandardLogForTest(globalLevel)\n return assertNotLoggedAtCallLevelOverrideLocalLevel(sl, method, localLevel, callLevel)\n })\n })\n })\n\n shouldNotLog('error', logLevels.none)\n shouldLog('error', logLevels.error)\n shouldLog('error', logLevels.warn)\n shouldLog('error', logLevels.info)\n shouldLog('error', logLevels.debug)\n shouldNotLogWithLocalLevelOverride('error', logLevels.none)\n shouldLogWithLocalLevelOverride('error', logLevels.error)\n shouldLogWithLocalLevelOverride('error', logLevels.warn)\n shouldLogWithLocalLevelOverride('error', logLevels.info)\n shouldLogWithLocalLevelOverride('error', logLevels.debug)\n\n shouldNotLog('warn', logLevels.none)\n shouldNotLog('warn', logLevels.error)\n shouldLog('warn', logLevels.warn)\n shouldLog('warn', logLevels.info)\n shouldLog('warn', logLevels.debug)\n shouldNotLogWithLocalLevelOverride('warn', logLevels.none)\n shouldNotLogWithLocalLevelOverride('warn', logLevels.error)\n shouldLogWithLocalLevelOverride('warn', logLevels.warn)\n shouldLogWithLocalLevelOverride('warn', logLevels.info)\n shouldLogWithLocalLevelOverride('warn', logLevels.debug)\n\n shouldNotLog('info', logLevels.none)\n shouldNotLog('info', logLevels.error)\n shouldNotLog('info', logLevels.warn)\n shouldLog('info', logLevels.info)\n shouldLog('info', logLevels.debug)\n shouldNotLogWithLocalLevelOverride('info', logLevels.none)\n shouldNotLogWithLocalLevelOverride('info', logLevels.error)\n shouldNotLogWithLocalLevelOverride('info', logLevels.warn)\n shouldLogWithLocalLevelOverride('info', logLevels.info)\n shouldLogWithLocalLevelOverride('info', logLevels.debug)\n\n shouldNotLog('debug', logLevels.none)\n shouldNotLog('debug', logLevels.error)\n shouldNotLog('debug', logLevels.warn)\n shouldNotLog('debug', logLevels.info)\n shouldLog('debug', logLevels.debug)\n shouldNotLogWithLocalLevelOverride('debug', logLevels.none)\n shouldNotLogWithLocalLevelOverride('debug', logLevels.error)\n shouldNotLogWithLocalLevelOverride('debug', logLevels.warn)\n shouldNotLogWithLocalLevelOverride('debug', logLevels.info)\n shouldLogWithLocalLevelOverride('debug', logLevels.debug)\n\n shouldNotCallLogFunction(logLevels.error, logLevels.none)\n shouldCallLogFunction(logLevels.error, logLevels.error)\n shouldCallLogFunction(logLevels.error, logLevels.warn)\n shouldCallLogFunction(logLevels.error, logLevels.info)\n shouldCallLogFunction(logLevels.error, logLevels.debug)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.error, logLevels.none)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.error, logLevels.error)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.error, logLevels.warn)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.error, logLevels.info)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.error, logLevels.debug)\n\n shouldNotCallLogFunction(logLevels.warn, logLevels.none)\n shouldNotCallLogFunction(logLevels.warn, logLevels.error)\n shouldCallLogFunction(logLevels.warn, logLevels.warn)\n shouldCallLogFunction(logLevels.warn, logLevels.info)\n shouldCallLogFunction(logLevels.warn, logLevels.debug)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.warn, logLevels.none)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.warn, logLevels.error)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.warn, logLevels.warn)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.warn, logLevels.info)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.warn, logLevels.debug)\n\n shouldNotCallLogFunction(logLevels.info, logLevels.none)\n shouldNotCallLogFunction(logLevels.info, logLevels.error)\n shouldNotCallLogFunction(logLevels.info, logLevels.warn)\n shouldCallLogFunction(logLevels.info, logLevels.info)\n shouldCallLogFunction(logLevels.info, logLevels.debug)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.info, logLevels.none)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.info, logLevels.error)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.info, logLevels.warn)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.info, logLevels.info)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.info, logLevels.debug)\n\n shouldNotCallLogFunction(logLevels.debug, logLevels.none)\n shouldNotCallLogFunction(logLevels.debug, logLevels.error)\n shouldNotCallLogFunction(logLevels.debug, logLevels.warn)\n shouldNotCallLogFunction(logLevels.debug, logLevels.info)\n shouldCallLogFunction(logLevels.debug, logLevels.debug)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.debug, logLevels.none)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.debug, logLevels.error)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.debug, logLevels.warn)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.debug, logLevels.info)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.debug, logLevels.debug)\n })\n\n it('writes entry directly', () => {\n const sl = createStandardLogForTest()\n const log = sl.getLogger('write-entry')\n const entry = { id: 'write-entry', level: logLevels.info, args: ['abc'], timestamp: new Date() }\n log.write(entry)\n a.satisfies(sl.reporter.logs, [entry])\n })\n test.each(['on', 'count', 'error', 'warn', 'info', 'debug'])('method %s is readonly', name => {\n const sl = createStandardLog()\n const log: any = sl.getLogger(`${name} is readonly`)\n\n a.throws(() => log[name] = true)\n })\n\n\n describe('on()', () => {\n it('log using log argument', () => {\n const sl = createStandardLogForTest()\n const logger = sl.getLogger('log on fn')\n logger.on('error', log => { log('value') })\n\n a.satisfies(sl.reporter.logs, [\n { id: 'log on fn', level: logLevels.error, args: ['value'] }\n ])\n })\n it('can take log level name in first argument', () => {\n const sl = createStandardLogForTest()\n const log = sl.getLogger('string-on')\n log.on('debug', () => { return })\n })\n })\n describe('count()', () => {\n test('will increment the counter', async () => {\n const sl = createStandardLogForTest()\n const logger = sl.getLogger('inc counter')\n\n logger.count()\n logger.count()\n\n a.satisfies(sl.reporter.logs, [\n { id: 'inc counter', level: logLevels.debug, args: [1] },\n { id: 'inc counter', level: logLevels.debug, args: [2] }\n ])\n })\n\n test('append args after the counter', async () => {\n const sl = createStandardLogForTest(logLevels.debug)\n const id = 'inc with args'\n const logger = sl.getLogger(id)\n logger.count('msg1', 'msg2')\n\n a.satisfies(sl.reporter.logs, [\n { id, level: logLevels.debug, args: [1, 'msg1', 'msg2'] }\n ])\n })\n\n test('not log if log level is less than debug', async () => {\n const sl = createStandardLogForTest(logLevels.debug - 1)\n const id = 'inc with args'\n const logger = sl.getLogger(id)\n logger.count('msg1', 'msg2')\n\n expect(sl.reporter.logs.length).toBe(0)\n })\n })\n\n test('logger with custom level', async () => {\n const mem = createMemoryLogReporter()\n const sl = createStandardLog({ customLevels: { 'cust_lvl': 100 }, reporters: [mem] })\n const logger = sl.getLogger('cust')\n logger.cust_lvl('a', 'b')\n\n a.satisfies(mem.logs, [{ id: 'cust', level: 100, args: ['a', 'b'] }])\n })\n\n describe('getLogger([,{ writeTo }])', () => {\n function testWriteTo(\n id: string, options: LoggerOptions,\n handler: (log: Logger, memLogs: LogEntry[], specialLogs: LogEntry[], sl: StandardLog) => void\n ) {\n const memReporter = createMemoryLogReporter()\n const specialReporter = createMemoryLogReporter({ id: 'special' })\n const sl = createStandardLog({ reporters: [memReporter, specialReporter] })\n\n const log = sl.getLogger(id, options)\n handler(log, memReporter.logs, specialReporter.logs, sl)\n }\n it('can specify which reporter to use by name', () => {\n testWriteTo('writeTo-string', { writeTo: 'special' }, (log, memLogs, specialLogs) => {\n log.error('error message')\n expect(memLogs.length).toEqual(0)\n expect(specialLogs.length).toEqual(1)\n })\n })\n it('can specify which reporter to use by regex', () => {\n testWriteTo('writeTo-regex', { writeTo: /^spec/ }, (log, memLogs, specialLogs) => {\n log.error('error message')\n expect(memLogs.length).toEqual(0)\n expect(specialLogs.length).toEqual(1)\n })\n })\n it('can specify which reporter to use by RegExp', () => {\n testWriteTo('writeTo-RegExp', { writeTo: new RegExp('^spec') }, (log, memLogs, specialLogs) => {\n log.error('error message')\n expect(memLogs.length).toEqual(0)\n expect(specialLogs.length).toEqual(1)\n })\n })\n it('can specify which reporter to use by function', () => {\n testWriteTo('writeTo-fn', { writeTo: id => id === 'special' },\n (log, memLogs, specialLogs) => {\n log.error('error message')\n expect(memLogs.length).toEqual(0)\n expect(specialLogs.length).toEqual(1)\n })\n })\n it('can specify custom reporter', () => {\n const reporter = createMemoryLogReporter({ id: 'custom mem' })\n testWriteTo('writeTo-reporter', { writeTo: reporter },\n (log, memLogs, specialLogs) => {\n log.error('error message')\n expect(memLogs.length).toEqual(0)\n expect(specialLogs.length).toEqual(0)\n expect(reporter.logs.length).toEqual(1)\n })\n })\n\n test('the custom console reporter cannot pick up logs from other loggers', () => {\n // if not, it would be a security issue as the new reporter\n // can capture the logs from other logger and send it elsewhere\n const reporter = createMemoryLogReporter({ id: 'custom mem' })\n testWriteTo('writeTo-reporter-no-override', { writeTo: reporter },\n (_, memLogs, specialLogs, sl) => {\n const log = sl.getLogger('writeTo-reporter-no-override-2')\n log.error('error message')\n\n expect(reporter.logs.length).toEqual(0)\n })\n })\n })\n})\n\ndescribe('suppressLogs()', () => {\n test('suppress log', () => {\n const sl = createStandardLogForTest()\n const log = sl.getLogger('l')\n suppressLogs(() => {\n log.alert('should not see me')\n }, log)\n\n expect(sl.reporter.getLogMessageWithLevel()).toBe('')\n })\n\n test('suppress multiple logs', () => {\n const sl = createStandardLogForTest()\n const log1 = sl.getLogger('l1')\n const log2 = sl.getLogger('l2')\n suppressLogs(() => {\n log1.alert('should not see me')\n log2.alert('should not see me too')\n }, log1, log2)\n expect(sl.reporter.getLogMessageWithLevel()).toBe('')\n })\n\n test('return block result', () => {\n const sl = createStandardLogForTest()\n const log1 = sl.getLogger('l')\n const log2 = sl.getLogger('l2')\n const a = suppressLogs(() => 1, log1, log2)\n expect(a).toBe(1)\n })\n})\n\ndescribe('getLogger()', () => {\n it('gets a logger that logs to console by default', () => {\n const log = getLogger('default')\n log.info('from global log, expected to be printed')\n })\n it('write to local reporter', () => {\n const reporter = createMemoryLogReporter()\n const log = getLogger('to local reporter', { writeTo: reporter })\n log.warn('hello')\n expect(reporter.logs.length).toBe(1)\n })\n})\n\ndescribe('configGlobal()', () => {\n beforeEach(() => {\n ctx.gsl = undefined\n ctx.configured = false\n })\n it('configure the global instance', () => {\n const mem = createMemoryLogReporter()\n configGlobal({ logLevel: logLevels.error, reporters: [mem] })\n\n const log = getLogger('default')\n log.error('error message')\n log.info('info message')\n expect(mem.logs.length).toBe(1)\n })\n it('can call after getLogger', () => {\n const log = getLogger('default')\n log.info('from global log, expected to be printed')\n\n const mem = createMemoryLogReporter()\n configGlobal({ logLevel: logLevels.error, reporters: [mem] })\n log.error('from global log, expected to be printed')\n log.info('from global log, this should not be printed')\n expect(mem.logs.length).toBe(1)\n })\n it('will emit a warning when called twice', () => {\n const mem = createMemoryLogReporter()\n configGlobal({ reporters: [mem] })\n configGlobal({ reporters: [] })\n a.satisfies(mem.logs, [{ id: 'standard-log', level: logLevels.warn, args: [/being called more than once/] }])\n })\n})\n"]}
|
|
1
|
+
{"version":3,"file":"standardLog.spec.js","sourceRoot":"","sources":["../ts/standardLog.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { assertron as a } from 'assertron'\nimport { InvalidId } from './errors.js'\nimport { createStandardLog, createStandardLogForTest, getLogger, StandardLog, suppressLogs } from './index.js'\nimport { logLevels, toLogLevelName } from './logLevels.js'\nimport { createMemoryLogReporter } from './memory.js'\nimport { configGlobal, ctx, StandardLogForTest } from './standardLog.js'\nimport { assertSSF, wrapTest } from './testUtil.js'\nimport { LogEntry, Logger, LoggerOptions, LogMethodNames, StandardLogOptions } from './types.js'\n\ndescribe('createStandardLog()', () => {\n describe('logLevel', () => {\n it('is default to info', () => {\n const actual = createStandardLog()\n expect(actual.logLevel).toBe(logLevels.info)\n })\n it('is readonly', () => {\n const actual = createStandardLog()\n a.throws(() => (actual as any).logLevel = logLevels.planck, err => /only a getter/.test(err))\n })\n it('set logLevel from options', () => {\n const actual = createStandardLog({ logLevel: logLevels.planck })\n expect(actual.logLevel).toBe(logLevels.planck)\n })\n })\n\n describe('custom levels', () => {\n it('can define custom levels', () => {\n const actual = createStandardLog({ customLevels: { urgent: 80 } })\n\n expect(actual.toLogLevelName(80)).toBe('urgent')\n })\n })\n\n describe('reporters', () => {\n it('can specify reporter', () => {\n const mem = createMemoryLogReporter()\n const sl = createStandardLog({ reporters: [mem] })\n const log = sl.getLogger('x')\n log.info('abc')\n expect(mem.logs.length).toBe(1)\n })\n })\n\n describe('related to global', () => {\n beforeEach(() => {\n ctx.gsl = undefined\n ctx.configured = false\n })\n it('will affect getLogger() if configGlobal() is not called', () => {\n createStandardLog({ logLevel: logLevels.planck })\n expect(ctx.gsl?.standardLog.logLevel).toBe(logLevels.planck)\n })\n })\n})\n\ndescribe('createStandardLogForTest()', () => {\n it('returns with memory reporter', () => {\n const { reporter } = createStandardLogForTest()\n expect(reporter.getLogMessageWithLevel()).toBe('')\n })\n\n it('defaults to debug', () => {\n const store = createStandardLogForTest()\n expect(store.logLevel).toBe(logLevels.debug)\n })\n})\n\ndescribe('standardLog.getLogger()', () => {\n it('supports id with alphanumeric and :_-.', () => {\n const sl = createStandardLog()\n sl.getLogger('abcdefghijklmnopqrstuvwxyz:-_.1234567890')\n })\n it('supports id with unicode', () => {\n const sl = createStandardLog()\n sl.getLogger('ミク香港')\n })\n it('supports id with @, \\\\ and /', () => {\n const sl = createStandardLog()\n sl.getLogger('@unional/fixture')\n sl.getLogger(`a\\\\b\\\\c`)\n })\n it.each('`~!#$%^&*()=+|[]{}<>,?'.split(''))('throws if id has unsupported character %s', (char: string) => {\n const sl = createStandardLog()\n a.throws(() => sl.getLogger(char), InvalidId)\n })\n it('throw InvalidId with ssf to the call site', () => {\n const sl = createStandardLog()\n const err = a.throws(() => sl.getLogger('!'), InvalidId)\n\n assertSSF(err, __filename)\n })\n test('id is readonly', () => {\n const sl = createStandardLog()\n const log: any = sl.getLogger('id is readonly')\n a.throws(() => log.id = 'b')\n })\n\n test('get logger with same name gets the same instance', () => {\n const sl = createStandardLog()\n const expected = sl.getLogger('same-inst')\n const actual = sl.getLogger('same-inst')\n expect(actual).toBe(expected)\n })\n\n it('can specify local log level', () => {\n const sl = createStandardLog()\n const log = sl.getLogger('local', { level: logLevels.trace })\n expect(log.level).toBe(logLevels.trace)\n })\n\n test('new logger will get custom level', () => {\n const sl = createStandardLog({ customLevels: { 'to_logger': 1234 } })\n const actual = sl.getLogger('to_logger_logger')\n expect(typeof actual.to_logger).toBe('function')\n })\n\n it('needs to cast Logger when wrapped', () => {\n function wrapper<N extends string = LogMethodNames>(options: StandardLogOptions<N>) {\n const sl = createStandardLog<N>(options)\n const log = sl.getLogger('local')\n expect(log.info).toBeDefined()\n return sl\n }\n\n const sl = wrapper({ customLevels: { 'cust': 123 } })\n const actual = sl.getLogger('c')\n expect(actual.cust).toBeDefined()\n\n // make sure the logger outside also get default log methods\n expect(actual.error).toBeDefined()\n })\n\n describe('log levels', () => {\n async function assertLoggedAtLevel(sl: StandardLogForTest, method: LogMethodNames, level: number) {\n const log = sl.getLogger(method)\n const msg = `should log on level: ${level}`;\n (log as any)[method](msg)\n a.satisfies(sl.reporter.logs, [{ id: method, level: sl.toLogLevel(method), args: [msg] }])\n }\n\n async function assertNotLoggedAtLevel(sl: StandardLogForTest, method: string, level: number) {\n const log = sl.getLogger(method);\n (log as any)[method](`should not log on level: ${level}`)\n expect(sl.reporter.logs.length).toBe(0)\n }\n\n async function assertLoggedAtLocalLevel(sl: StandardLogForTest, method: LogMethodNames, localLevel: number) {\n const log = sl.getLogger(method, { level: localLevel })\n\n const msg = `should log on level: ${localLevel}`;\n (log as any)[method](msg)\n a.satisfies(sl.reporter.logs, [{ id: log.id, level: sl.toLogLevel(method), args: [msg] }])\n }\n\n async function assertNotLoggedAtLocalLevel(sl: StandardLogForTest, method: string, localLevel: number) {\n const log = sl.getLogger(method, { level: localLevel });\n (log as any)[method](`should not log on level: ${localLevel}`)\n expect(sl.reporter.logs.length).toBe(0)\n }\n\n async function assertLoggedAtCallLevel(sl: StandardLogForTest, method: string, callLevel: number) {\n const log = sl.getLogger(method)\n let actual = false\n log.on(callLevel, () => actual = true)\n expect(actual).toBe(true)\n }\n\n async function assertNotLoggedAtCallLevel(sl: StandardLogForTest, method: string, callLevel: number, actualLevel: number) {\n const log = sl.getLogger(method)\n log.on(callLevel, () => { throw new Error(`should not log at level ${actualLevel}`) })\n }\n\n async function assertLoggedAtCallLevelOverrideLocalLevel(sl: StandardLogForTest, method: string, localLevel: number, callLevel: number) {\n const log = sl.getLogger(method, { level: localLevel })\n let actual = false\n log.on(callLevel, () => actual = true)\n expect(actual).toBe(true)\n }\n\n async function assertNotLoggedAtCallLevelOverrideLocalLevel(sl: StandardLogForTest, method: string, localLevel: number, callLevel: number) {\n const log = sl.getLogger(method, { level: localLevel })\n log.on(callLevel, () => { throw new Error(`should not log at level ${localLevel}`) })\n }\n\n const shouldLog = wrapTest((test) => (method: LogMethodNames, level: number) => {\n const sl = createStandardLogForTest(level)\n const name = sl.toLogLevelName(level)\n test(`${method}() should log on level: ${name} (${level})`, () => {\n return assertLoggedAtLevel(sl, method, level)\n })\n })\n const shouldNotLog = wrapTest((test) => (method: string, level: number) => {\n const sl = createStandardLogForTest(level)\n const name = sl.toLogLevelName(level)\n test(`${method}() should not log on level: ${name} (${level})`, () => {\n return assertNotLoggedAtLevel(sl, method, level)\n })\n })\n\n const shouldLogWithLocalLevelOverride = wrapTest((test) => (method: LogMethodNames, localLevel: number) => {\n const localName = toLogLevelName(localLevel);\n [logLevels.none, logLevels.error, logLevels.warn, logLevels.info, logLevels.debug].forEach(globalLevel => {\n const globalName = toLogLevelName(globalLevel) || 'none'\n test(`${method}() should log on local level: ${localName} (${localLevel}) while global level: ${globalName} (${globalLevel})`, () => {\n const sl = createStandardLogForTest(globalLevel)\n return assertLoggedAtLocalLevel(sl, method, localLevel)\n })\n })\n })\n\n const shouldNotLogWithLocalLevelOverride = wrapTest((test) => (method: string, localLevel: number) => {\n const localName = toLogLevelName(localLevel);\n\n [logLevels.none, logLevels.error, logLevels.warn, logLevels.info, logLevels.debug].forEach(globalLevel => {\n const globalName = toLogLevelName(globalLevel) || 'none'\n test(`${method}() should not log on local level: ${localName} (${localLevel}) while global level: ${globalName} (${globalLevel})`, () => {\n const sl = createStandardLogForTest(globalLevel)\n return assertNotLoggedAtLocalLevel(sl, method, localLevel)\n })\n })\n })\n\n const shouldCallLogFunction = wrapTest((test) => (callLevel: number, actualLevel: number) => {\n const method = toLogLevelName(callLevel)\n const name = toLogLevelName(actualLevel)\n test(`${method}() should call log function on level: ${name} (${actualLevel})`, () => {\n const sl = createStandardLogForTest(actualLevel)\n return assertLoggedAtCallLevel(sl, method, callLevel)\n })\n })\n\n const shouldNotCallLogFunction = wrapTest((test) => (callLevel: number, actualLevel: number) => {\n const method = toLogLevelName(callLevel)\n const name = toLogLevelName(actualLevel)\n test(`${method}() should not call log function on level: ${name} (${actualLevel})`, () => {\n const sl = createStandardLogForTest(actualLevel)\n return assertNotLoggedAtCallLevel(sl, method, callLevel, actualLevel)\n })\n })\n\n const shouldCallLogFunctionWithLocalLevelOverride = wrapTest((test) => (callLevel: number, localLevel: number) => {\n const method = toLogLevelName(callLevel)\n const localName = toLogLevelName(localLevel);\n\n [logLevels.none, logLevels.error, logLevels.warn, logLevels.info, logLevels.debug].forEach(globalLevel => {\n const globalName = toLogLevelName(globalLevel) || 'none'\n test(`${method}() should log on local level: ${localName} (${localLevel}) while global level: ${globalName} (${globalLevel})`, () => {\n const sl = createStandardLogForTest(globalLevel)\n return assertLoggedAtCallLevelOverrideLocalLevel(sl, method, localLevel, callLevel)\n })\n })\n })\n\n const shouldNotCallLogFunctionWithLocalLevelOverride = wrapTest((test) => (callLevel: number, localLevel: number) => {\n const method = toLogLevelName(callLevel)\n const localName = toLogLevelName(localLevel);\n\n [logLevels.none, logLevels.error, logLevels.warn, logLevels.info, logLevels.debug].forEach(globalLevel => {\n const globalName = toLogLevelName(globalLevel) || 'none'\n test(`${method}() should not log on local level: ${localName} (${localLevel}) while global level: ${globalName} (${globalLevel})`, () => {\n const sl = createStandardLogForTest(globalLevel)\n return assertNotLoggedAtCallLevelOverrideLocalLevel(sl, method, localLevel, callLevel)\n })\n })\n })\n\n shouldNotLog('error', logLevels.none)\n shouldLog('error', logLevels.error)\n shouldLog('error', logLevels.warn)\n shouldLog('error', logLevels.info)\n shouldLog('error', logLevels.debug)\n shouldNotLogWithLocalLevelOverride('error', logLevels.none)\n shouldLogWithLocalLevelOverride('error', logLevels.error)\n shouldLogWithLocalLevelOverride('error', logLevels.warn)\n shouldLogWithLocalLevelOverride('error', logLevels.info)\n shouldLogWithLocalLevelOverride('error', logLevels.debug)\n\n shouldNotLog('warn', logLevels.none)\n shouldNotLog('warn', logLevels.error)\n shouldLog('warn', logLevels.warn)\n shouldLog('warn', logLevels.info)\n shouldLog('warn', logLevels.debug)\n shouldNotLogWithLocalLevelOverride('warn', logLevels.none)\n shouldNotLogWithLocalLevelOverride('warn', logLevels.error)\n shouldLogWithLocalLevelOverride('warn', logLevels.warn)\n shouldLogWithLocalLevelOverride('warn', logLevels.info)\n shouldLogWithLocalLevelOverride('warn', logLevels.debug)\n\n shouldNotLog('info', logLevels.none)\n shouldNotLog('info', logLevels.error)\n shouldNotLog('info', logLevels.warn)\n shouldLog('info', logLevels.info)\n shouldLog('info', logLevels.debug)\n shouldNotLogWithLocalLevelOverride('info', logLevels.none)\n shouldNotLogWithLocalLevelOverride('info', logLevels.error)\n shouldNotLogWithLocalLevelOverride('info', logLevels.warn)\n shouldLogWithLocalLevelOverride('info', logLevels.info)\n shouldLogWithLocalLevelOverride('info', logLevels.debug)\n\n shouldNotLog('debug', logLevels.none)\n shouldNotLog('debug', logLevels.error)\n shouldNotLog('debug', logLevels.warn)\n shouldNotLog('debug', logLevels.info)\n shouldLog('debug', logLevels.debug)\n shouldNotLogWithLocalLevelOverride('debug', logLevels.none)\n shouldNotLogWithLocalLevelOverride('debug', logLevels.error)\n shouldNotLogWithLocalLevelOverride('debug', logLevels.warn)\n shouldNotLogWithLocalLevelOverride('debug', logLevels.info)\n shouldLogWithLocalLevelOverride('debug', logLevels.debug)\n\n shouldNotCallLogFunction(logLevels.error, logLevels.none)\n shouldCallLogFunction(logLevels.error, logLevels.error)\n shouldCallLogFunction(logLevels.error, logLevels.warn)\n shouldCallLogFunction(logLevels.error, logLevels.info)\n shouldCallLogFunction(logLevels.error, logLevels.debug)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.error, logLevels.none)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.error, logLevels.error)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.error, logLevels.warn)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.error, logLevels.info)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.error, logLevels.debug)\n\n shouldNotCallLogFunction(logLevels.warn, logLevels.none)\n shouldNotCallLogFunction(logLevels.warn, logLevels.error)\n shouldCallLogFunction(logLevels.warn, logLevels.warn)\n shouldCallLogFunction(logLevels.warn, logLevels.info)\n shouldCallLogFunction(logLevels.warn, logLevels.debug)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.warn, logLevels.none)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.warn, logLevels.error)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.warn, logLevels.warn)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.warn, logLevels.info)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.warn, logLevels.debug)\n\n shouldNotCallLogFunction(logLevels.info, logLevels.none)\n shouldNotCallLogFunction(logLevels.info, logLevels.error)\n shouldNotCallLogFunction(logLevels.info, logLevels.warn)\n shouldCallLogFunction(logLevels.info, logLevels.info)\n shouldCallLogFunction(logLevels.info, logLevels.debug)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.info, logLevels.none)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.info, logLevels.error)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.info, logLevels.warn)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.info, logLevels.info)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.info, logLevels.debug)\n\n shouldNotCallLogFunction(logLevels.debug, logLevels.none)\n shouldNotCallLogFunction(logLevels.debug, logLevels.error)\n shouldNotCallLogFunction(logLevels.debug, logLevels.warn)\n shouldNotCallLogFunction(logLevels.debug, logLevels.info)\n shouldCallLogFunction(logLevels.debug, logLevels.debug)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.debug, logLevels.none)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.debug, logLevels.error)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.debug, logLevels.warn)\n shouldNotCallLogFunctionWithLocalLevelOverride(logLevels.debug, logLevels.info)\n shouldCallLogFunctionWithLocalLevelOverride(logLevels.debug, logLevels.debug)\n })\n\n it('writes entry directly', () => {\n const sl = createStandardLogForTest()\n const log = sl.getLogger('write-entry')\n const entry = { id: 'write-entry', level: logLevels.info, args: ['abc'], timestamp: new Date() }\n log.write(entry)\n a.satisfies(sl.reporter.logs, [entry])\n })\n test.each(['on', 'count', 'error', 'warn', 'info', 'debug'])('method %s is readonly', name => {\n const sl = createStandardLog()\n const log: any = sl.getLogger(`${name} is readonly`)\n\n a.throws(() => log[name] = true)\n })\n\n\n describe('on()', () => {\n it('log using log argument', () => {\n const sl = createStandardLogForTest()\n const logger = sl.getLogger('log on fn')\n logger.on('error', log => { log('value') })\n\n a.satisfies(sl.reporter.logs, [\n { id: 'log on fn', level: logLevels.error, args: ['value'] }\n ])\n })\n it('can take log level name in first argument', () => {\n const sl = createStandardLogForTest()\n const log = sl.getLogger('string-on')\n log.on('debug', () => { return })\n })\n })\n describe('count()', () => {\n test('will increment the counter', async () => {\n const sl = createStandardLogForTest()\n const logger = sl.getLogger('inc counter')\n\n logger.count()\n logger.count()\n\n a.satisfies(sl.reporter.logs, [\n { id: 'inc counter', level: logLevels.debug, args: [1] },\n { id: 'inc counter', level: logLevels.debug, args: [2] }\n ])\n })\n\n test('append args after the counter', async () => {\n const sl = createStandardLogForTest(logLevels.debug)\n const id = 'inc with args'\n const logger = sl.getLogger(id)\n logger.count('msg1', 'msg2')\n\n a.satisfies(sl.reporter.logs, [\n { id, level: logLevels.debug, args: [1, 'msg1', 'msg2'] }\n ])\n })\n\n test('not log if log level is less than debug', async () => {\n const sl = createStandardLogForTest(logLevels.debug - 1)\n const id = 'inc with args'\n const logger = sl.getLogger(id)\n logger.count('msg1', 'msg2')\n\n expect(sl.reporter.logs.length).toBe(0)\n })\n })\n\n test('logger with custom level', async () => {\n const mem = createMemoryLogReporter()\n const sl = createStandardLog({ customLevels: { 'cust_lvl': 100 }, reporters: [mem] })\n const logger = sl.getLogger('cust')\n logger.cust_lvl('a', 'b')\n\n a.satisfies(mem.logs, [{ id: 'cust', level: 100, args: ['a', 'b'] }])\n })\n\n describe('getLogger([,{ writeTo }])', () => {\n function testWriteTo(\n id: string, options: LoggerOptions,\n handler: (log: Logger, memLogs: LogEntry[], specialLogs: LogEntry[], sl: StandardLog) => void\n ) {\n const memReporter = createMemoryLogReporter()\n const specialReporter = createMemoryLogReporter({ id: 'special' })\n const sl = createStandardLog({ reporters: [memReporter, specialReporter] })\n\n const log = sl.getLogger(id, options)\n handler(log, memReporter.logs, specialReporter.logs, sl)\n }\n it('can specify which reporter to use by name', () => {\n testWriteTo('writeTo-string', { writeTo: 'special' }, (log, memLogs, specialLogs) => {\n log.error('error message')\n expect(memLogs.length).toEqual(0)\n expect(specialLogs.length).toEqual(1)\n })\n })\n it('can specify which reporter to use by regex', () => {\n testWriteTo('writeTo-regex', { writeTo: /^spec/ }, (log, memLogs, specialLogs) => {\n log.error('error message')\n expect(memLogs.length).toEqual(0)\n expect(specialLogs.length).toEqual(1)\n })\n })\n it('can specify which reporter to use by RegExp', () => {\n testWriteTo('writeTo-RegExp', { writeTo: new RegExp('^spec') }, (log, memLogs, specialLogs) => {\n log.error('error message')\n expect(memLogs.length).toEqual(0)\n expect(specialLogs.length).toEqual(1)\n })\n })\n it('can specify which reporter to use by function', () => {\n testWriteTo('writeTo-fn', { writeTo: id => id === 'special' },\n (log, memLogs, specialLogs) => {\n log.error('error message')\n expect(memLogs.length).toEqual(0)\n expect(specialLogs.length).toEqual(1)\n })\n })\n it('can specify custom reporter', () => {\n const reporter = createMemoryLogReporter({ id: 'custom mem' })\n testWriteTo('writeTo-reporter', { writeTo: reporter },\n (log, memLogs, specialLogs) => {\n log.error('error message')\n expect(memLogs.length).toEqual(0)\n expect(specialLogs.length).toEqual(0)\n expect(reporter.logs.length).toEqual(1)\n })\n })\n\n test('the custom console reporter cannot pick up logs from other loggers', () => {\n // if not, it would be a security issue as the new reporter\n // can capture the logs from other logger and send it elsewhere\n const reporter = createMemoryLogReporter({ id: 'custom mem' })\n testWriteTo('writeTo-reporter-no-override', { writeTo: reporter },\n (_, memLogs, specialLogs, sl) => {\n const log = sl.getLogger('writeTo-reporter-no-override-2')\n log.error('error message')\n\n expect(reporter.logs.length).toEqual(0)\n })\n })\n })\n})\n\ndescribe('suppressLogs()', () => {\n test('suppress log', () => {\n const sl = createStandardLogForTest()\n const log = sl.getLogger('l')\n suppressLogs(() => {\n log.alert('should not see me')\n }, log)\n\n expect(sl.reporter.getLogMessageWithLevel()).toBe('')\n })\n\n test('suppress multiple logs', () => {\n const sl = createStandardLogForTest()\n const log1 = sl.getLogger('l1')\n const log2 = sl.getLogger('l2')\n suppressLogs(() => {\n log1.alert('should not see me')\n log2.alert('should not see me too')\n }, log1, log2)\n expect(sl.reporter.getLogMessageWithLevel()).toBe('')\n })\n\n test('return block result', () => {\n const sl = createStandardLogForTest()\n const log1 = sl.getLogger('l')\n const log2 = sl.getLogger('l2')\n const a = suppressLogs(() => 1, log1, log2)\n expect(a).toBe(1)\n })\n})\n\ndescribe('getLogger()', () => {\n it('gets a logger that logs to console by default', () => {\n const log = getLogger('default')\n log.info('from global log, expected to be printed')\n })\n it('write to local reporter', () => {\n const reporter = createMemoryLogReporter()\n const log = getLogger('to local reporter', { writeTo: reporter })\n log.warn('hello')\n expect(reporter.logs.length).toBe(1)\n })\n})\n\ndescribe('configGlobal()', () => {\n beforeEach(() => {\n ctx.gsl = undefined\n ctx.configured = false\n })\n\n it('configure the global instance', () => {\n const mem = createMemoryLogReporter()\n configGlobal({ logLevel: logLevels.error, reporters: [mem] })\n\n const log = getLogger('default')\n log.error('error message')\n log.info('info message')\n expect(mem.logs.length).toBe(1)\n })\n\n it('can call after getLogger', () => {\n const log = getLogger('default')\n log.info('from global log, expected to be printed')\n\n const mem = createMemoryLogReporter()\n configGlobal({ logLevel: logLevels.error, reporters: [mem] })\n log.error('from global log, expected to be printed')\n log.info('from global log, this should not be printed')\n expect(mem.logs.length).toBe(1)\n })\n\n it('will emit a warning when called twice', () => {\n const mem = createMemoryLogReporter()\n configGlobal({ reporters: [mem] })\n configGlobal({ reporters: [] })\n a.satisfies(mem.logs, [{ id: 'standard-log', level: logLevels.warn, args: [/being called more than once/] }])\n })\n\n it('remove existing reporter', () => {\n const log = getLogger('default')\n log.info('from global log, expected to be printed')\n\n const mem = createMemoryLogReporter()\n configGlobal({ logLevel: logLevels.error, reporters: [mem] })\n\n const reporters = ctx.gsl?.store.reporters\n expect(reporters).toEqual([mem])\n })\n})\n"]}
|
package/dist/standard-log.es5.js
CHANGED
|
@@ -6355,9 +6355,11 @@ function createMemoryLogReporter(options) {
|
|
|
6355
6355
|
logs.push(formatter(entry));
|
|
6356
6356
|
},
|
|
6357
6357
|
getLogMessage: function () {
|
|
6358
|
+
return this.getLogMessages().join('\n');
|
|
6359
|
+
},
|
|
6360
|
+
getLogMessages: function () {
|
|
6358
6361
|
return logs.map(platform_js_1.toInspectLogEntry)
|
|
6359
|
-
.map(function (log) { return log.args.join(' '); })
|
|
6360
|
-
.join('\n');
|
|
6362
|
+
.map(function (log) { return log.args.join(' '); });
|
|
6361
6363
|
},
|
|
6362
6364
|
getLogMessageWithLevel: function () { return toMessageWithLevel(logs); }
|
|
6363
6365
|
});
|
|
@@ -6481,8 +6483,7 @@ function configGlobal(options) {
|
|
|
6481
6483
|
}
|
|
6482
6484
|
if (options.reporters) {
|
|
6483
6485
|
var reporters = exports.ctx.gsl.store.reporters;
|
|
6484
|
-
|
|
6485
|
-
reporters.pop();
|
|
6486
|
+
reporters.length = 0;
|
|
6486
6487
|
reporters.push.apply(reporters, options.reporters);
|
|
6487
6488
|
}
|
|
6488
6489
|
}
|
|
Binary file
|