@subsquid/logger 0.0.1
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 +71 -0
- package/lib/demo.d.ts +2 -0
- package/lib/demo.d.ts.map +1 -0
- package/lib/demo.js +19 -0
- package/lib/demo.js.map +1 -0
- package/lib/index.d.ts +5 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +25 -0
- package/lib/index.js.map +1 -0
- package/lib/level.d.ts +17 -0
- package/lib/level.d.ts.map +1 -0
- package/lib/level.js +82 -0
- package/lib/level.js.map +1 -0
- package/lib/level.test.d.ts +2 -0
- package/lib/level.test.d.ts.map +1 -0
- package/lib/level.test.js +73 -0
- package/lib/level.test.js.map +1 -0
- package/lib/logger.d.ts +39 -0
- package/lib/logger.d.ts.map +1 -0
- package/lib/logger.js +106 -0
- package/lib/logger.js.map +1 -0
- package/lib/sinks/json.d.ts +3 -0
- package/lib/sinks/json.d.ts.map +1 -0
- package/lib/sinks/json.js +24 -0
- package/lib/sinks/json.js.map +1 -0
- package/lib/sinks/pretty.d.ts +19 -0
- package/lib/sinks/pretty.d.ts.map +1 -0
- package/lib/sinks/pretty.js +244 -0
- package/lib/sinks/pretty.js.map +1 -0
- package/package.json +33 -0
- package/src/demo.ts +23 -0
- package/src/index.ts +17 -0
- package/src/level.test.ts +80 -0
- package/src/level.ts +96 -0
- package/src/logger.ts +146 -0
- package/src/sinks/json.ts +23 -0
- package/src/sinks/pretty.ts +248 -0
package/README.md
ADDED
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# @subsquid/logger
|
|
2
|
+
|
|
3
|
+
Lightweight structured logger for squid framework.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import {createLogger} from "@subsquid/logger"
|
|
9
|
+
|
|
10
|
+
const log = createLogger('sqd:demo')
|
|
11
|
+
|
|
12
|
+
log.info('message with severity info')
|
|
13
|
+
log.debug('message with severity debug')
|
|
14
|
+
|
|
15
|
+
log.info({foo: 1, bar: 2}, 'message and some additional attributes')
|
|
16
|
+
|
|
17
|
+
// info message consisting only of attributes
|
|
18
|
+
log.info({a: 1, b: 2, c: 3, array: [4, 5]})
|
|
19
|
+
|
|
20
|
+
// pass an Error object inplace of attributes
|
|
21
|
+
log.warn(new Error('Some error occured'))
|
|
22
|
+
|
|
23
|
+
// Error together with some other attributes and message
|
|
24
|
+
log.error({err: new Error('Another error'), a: 1, b: 2}, 'weird')
|
|
25
|
+
|
|
26
|
+
// create a child logger instance with namespace `sqd:demo:sql`
|
|
27
|
+
// and `req: 1` attribute attached to every log record
|
|
28
|
+
const sqlLog = log.child('sql', {req: 1})
|
|
29
|
+
sqlLog.debug('connecting to database')
|
|
30
|
+
sqlLog.debug({sql: 'SELECT max(id) FROM status'})
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Configuration
|
|
34
|
+
|
|
35
|
+
There are 6 log levels available: `TRACE`, `DEBUG`, `INFO`, `WARN`, `ERROR`, `FATAL`.
|
|
36
|
+
|
|
37
|
+
The log level of each logger instance is solely determined by its namespace and specified
|
|
38
|
+
via set of `SQD_TRACE`, ..., `SQD_FATAL` environment variables.
|
|
39
|
+
The default log level is `INFO`.
|
|
40
|
+
|
|
41
|
+
Users override the default log level by setting in appropriate
|
|
42
|
+
environment variable a pattern which matches the logger's namespace.
|
|
43
|
+
|
|
44
|
+
* `SQD_DEBUG=*` - sets the log level to `DEBUG` for all loggers.
|
|
45
|
+
* `SQD_DEBUG=foo` - loggers `foo`, `foo:bar`, `foo:a:b`, etc will have a `DEBUG` level.
|
|
46
|
+
* `SQD_DEBUG=a:b*:c,d` - loggers `a:b:c`, `a:baz:c`, `a:baz:c:foo`, `d`, etc will have a `DEBUG` level, logger `a:z:c` will not.
|
|
47
|
+
|
|
48
|
+
When logger is matched by multiple `SQD_*` variables, the match with the highest specificity wins.
|
|
49
|
+
When specificities are equal, the most verbose matched log level will be effective.
|
|
50
|
+
|
|
51
|
+
Specificity is computed as a number of namespace characters
|
|
52
|
+
which are not matched by wildcards and which are not part of a child namespace.
|
|
53
|
+
For example, given a pattern `foo*bar`, the specificity of `foo:bar:baz:qux`, `foobar` and `foobazbar` is `6`.
|
|
54
|
+
|
|
55
|
+
## Output
|
|
56
|
+
|
|
57
|
+
The logger always writes to `stderr`.
|
|
58
|
+
|
|
59
|
+
When `stderr` is connected to a terminal, log records will be pretty printed.
|
|
60
|
+
|
|
61
|
+

|
|
62
|
+
|
|
63
|
+
Otherwise, log records will be written as JSON lines.
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
{"level":2,"time":1650875498437,"ns":"sqd:demo","msg":"message with severity info"}
|
|
67
|
+
{"level":2,"time":1650875498437,"ns":"sqd:demo","msg":"message and some additional attributes","foo":1,"bar":2}
|
|
68
|
+
{"level":2,"time":1650875498437,"ns":"sqd:demo","a":1,"b":2,"c":3,"array":[4,5]}
|
|
69
|
+
{"level":3,"time":1650875498437,"ns":"sqd:demo","err":{"stack":"Error: Some error occured\n at Object.<anonymous> (/Users/eldar/dev/squid/util/logger/lib/demo.js:11:10)\n at Module._compile (node:internal/modules/cjs/loader:1103:14)\n at Object.Module._extensions..js (node:internal/modules/cjs/loader:1155:10)\n at Module.load (node:internal/modules/cjs/loader:981:32)\n at Function.Module._load (node:internal/modules/cjs/loader:822:12)\n at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)\n at node:internal/main/run_main_module:17:47"}}
|
|
70
|
+
{"level":4,"time":1650875498438,"ns":"sqd:demo","msg":"weird","err":{"stack":"Error: Another error\n at Object.<anonymous> (/Users/eldar/dev/squid/util/logger/lib/demo.js:13:18)\n at Module._compile (node:internal/modules/cjs/loader:1103:14)\n at Object.Module._extensions..js (node:internal/modules/cjs/loader:1155:10)\n at Module.load (node:internal/modules/cjs/loader:981:32)\n at Function.Module._load (node:internal/modules/cjs/loader:822:12)\n at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)\n at node:internal/main/run_main_module:17:47"},"a":1,"b":2}
|
|
71
|
+
```
|
package/lib/demo.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demo.d.ts","sourceRoot":"","sources":["../src/demo.ts"],"names":[],"mappings":""}
|
package/lib/demo.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const index_1 = require("./index");
|
|
4
|
+
const log = (0, index_1.createLogger)('sqd:demo');
|
|
5
|
+
log.info('message with severity info');
|
|
6
|
+
log.debug('message with severity debug');
|
|
7
|
+
log.info({ foo: 1, bar: 2 }, 'message and some additional attributes');
|
|
8
|
+
// info message consisting only of attributes
|
|
9
|
+
log.info({ a: 1, b: 2, c: 3, array: [4, 5, { a: 1, b: 2, c: { foo: 'foo', bar: 'bar' } }, { a: 3, b: 4 }] });
|
|
10
|
+
// pass an Error object inplace of attributes
|
|
11
|
+
log.warn(new Error('Some error occured'));
|
|
12
|
+
// Error together with some other attributes and message
|
|
13
|
+
log.error({ err: new Error('Another error'), a: 1, b: 2 }, 'weird');
|
|
14
|
+
// create a child logger instance with namespace `sqd:demo:sql`
|
|
15
|
+
// and `req: 1` attribute attached to every log record
|
|
16
|
+
const sqlLog = log.child('sql', { req: 1 });
|
|
17
|
+
sqlLog.debug('connecting to database');
|
|
18
|
+
sqlLog.debug({ sql: 'SELECT max(id) FROM status' });
|
|
19
|
+
//# sourceMappingURL=demo.js.map
|
package/lib/demo.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demo.js","sourceRoot":"","sources":["../src/demo.ts"],"names":[],"mappings":";;AAAA,mCAAoC;AAEpC,MAAM,GAAG,GAAG,IAAA,oBAAY,EAAC,UAAU,CAAC,CAAA;AAEpC,GAAG,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAA;AACtC,GAAG,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAA;AAExC,GAAG,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAC,EAAE,wCAAwC,CAAC,CAAA;AAEpE,6CAA6C;AAC7C,GAAG,CAAC,IAAI,CAAC,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAC,EAAC,EAAE,EAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,CAAC,EAAC,CAAC,CAAA;AAEpG,6CAA6C;AAC7C,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAA;AAEzC,wDAAwD;AACxD,GAAG,CAAC,KAAK,CAAC,EAAC,GAAG,EAAE,IAAI,KAAK,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,EAAE,OAAO,CAAC,CAAA;AAEjE,+DAA+D;AAC/D,sDAAsD;AACtD,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,EAAC,GAAG,EAAE,CAAC,EAAC,CAAC,CAAA;AACzC,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAA;AACtC,MAAM,CAAC,KAAK,CAAC,EAAC,GAAG,EAAE,4BAA4B,EAAC,CAAC,CAAA"}
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,UAAU,CAAA;AAI/B,OAAO,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAA;AAChC,cAAc,UAAU,CAAA;AASxB,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,CAEpE"}
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
+
}) : (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
o[k2] = m[k];
|
|
8
|
+
}));
|
|
9
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
10
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
11
|
+
};
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.createLogger = exports.LogLevel = void 0;
|
|
14
|
+
const logger_1 = require("./logger");
|
|
15
|
+
const json_1 = require("./sinks/json");
|
|
16
|
+
const pretty_1 = require("./sinks/pretty");
|
|
17
|
+
var level_1 = require("./level");
|
|
18
|
+
Object.defineProperty(exports, "LogLevel", { enumerable: true, get: function () { return level_1.LogLevel; } });
|
|
19
|
+
__exportStar(require("./logger"), exports);
|
|
20
|
+
const ROOT = new logger_1.Logger(process.stderr.isTTY ? pretty_1.prettyStderrSink : json_1.jsonLinesStderrSink, '');
|
|
21
|
+
function createLogger(ns, attributes) {
|
|
22
|
+
return ROOT.child(ns, attributes);
|
|
23
|
+
}
|
|
24
|
+
exports.createLogger = createLogger;
|
|
25
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,qCAA+B;AAC/B,uCAAgD;AAChD,2CAA+C;AAE/C,iCAAgC;AAAxB,iGAAA,QAAQ,OAAA;AAChB,2CAAwB;AAGxB,MAAM,IAAI,GAAG,IAAI,eAAM,CACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,yBAAgB,CAAC,CAAC,CAAC,0BAAmB,EAC7D,EAAE,CACL,CAAA;AAGD,SAAgB,YAAY,CAAC,EAAU,EAAE,UAAmB;IACxD,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC,CAAA;AACrC,CAAC;AAFD,oCAEC"}
|
package/lib/level.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare enum LogLevel {
|
|
2
|
+
TRACE = 0,
|
|
3
|
+
DEBUG = 1,
|
|
4
|
+
INFO = 2,
|
|
5
|
+
WARN = 3,
|
|
6
|
+
ERROR = 4,
|
|
7
|
+
FATAL = 5
|
|
8
|
+
}
|
|
9
|
+
export declare class Levels {
|
|
10
|
+
private cache;
|
|
11
|
+
private levels;
|
|
12
|
+
get(ns: string): LogLevel;
|
|
13
|
+
private determineLevel;
|
|
14
|
+
configure(level: LogLevel, config: string): void;
|
|
15
|
+
}
|
|
16
|
+
export declare const LEVELS: Levels;
|
|
17
|
+
//# sourceMappingURL=level.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"level.d.ts","sourceRoot":"","sources":["../src/level.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAChB,KAAK,IAAI;IACT,KAAK,IAAI;IACT,IAAI,IAAI;IACR,IAAI,IAAI;IACR,KAAK,IAAI;IACT,KAAK,IAAI;CACZ;AA+CD,qBAAa,MAAM;IACf,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,MAAM,CAA6E;IAE3F,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ;IASzB,OAAO,CAAC,cAAc;IAatB,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAInD;AAGD,eAAO,MAAM,MAAM,QAAe,CAGjC"}
|
package/lib/level.js
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LEVELS = exports.Levels = exports.LogLevel = void 0;
|
|
4
|
+
var LogLevel;
|
|
5
|
+
(function (LogLevel) {
|
|
6
|
+
LogLevel[LogLevel["TRACE"] = 0] = "TRACE";
|
|
7
|
+
LogLevel[LogLevel["DEBUG"] = 1] = "DEBUG";
|
|
8
|
+
LogLevel[LogLevel["INFO"] = 2] = "INFO";
|
|
9
|
+
LogLevel[LogLevel["WARN"] = 3] = "WARN";
|
|
10
|
+
LogLevel[LogLevel["ERROR"] = 4] = "ERROR";
|
|
11
|
+
LogLevel[LogLevel["FATAL"] = 5] = "FATAL";
|
|
12
|
+
})(LogLevel = exports.LogLevel || (exports.LogLevel = {}));
|
|
13
|
+
function compileLevelConfig(config) {
|
|
14
|
+
let variants = config.split(',').map(ns => {
|
|
15
|
+
ns = ns.trim();
|
|
16
|
+
let regex = new RegExp('^' + ns.split('*').map(escapeRegex).join('(.*)') + '(:.*)?$');
|
|
17
|
+
return function match(ns) {
|
|
18
|
+
let m = regex.exec(ns);
|
|
19
|
+
if (!m)
|
|
20
|
+
return 0;
|
|
21
|
+
let specificity = ns.length + 1;
|
|
22
|
+
for (let i = 1; i < m.length; i++) {
|
|
23
|
+
specificity -= m[i]?.length || 0;
|
|
24
|
+
}
|
|
25
|
+
return specificity;
|
|
26
|
+
};
|
|
27
|
+
});
|
|
28
|
+
return function matchLevel(ns) {
|
|
29
|
+
let specificity = 0;
|
|
30
|
+
for (let i = 0; i < variants.length; i++) {
|
|
31
|
+
specificity = Math.max(specificity, variants[i](ns));
|
|
32
|
+
}
|
|
33
|
+
return specificity;
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping
|
|
37
|
+
function escapeRegex(s) {
|
|
38
|
+
return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
39
|
+
}
|
|
40
|
+
function noMatch(ns) {
|
|
41
|
+
return 0;
|
|
42
|
+
}
|
|
43
|
+
class Levels {
|
|
44
|
+
constructor() {
|
|
45
|
+
this.cache = {};
|
|
46
|
+
this.levels = [noMatch, noMatch, noMatch, noMatch, noMatch, noMatch];
|
|
47
|
+
}
|
|
48
|
+
get(ns) {
|
|
49
|
+
let level = this.cache[ns];
|
|
50
|
+
if (level == null) {
|
|
51
|
+
return this.cache[ns] = this.determineLevel(ns);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
return level;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
determineLevel(ns) {
|
|
58
|
+
let specificity = 0;
|
|
59
|
+
let level = LogLevel.INFO;
|
|
60
|
+
for (let i = 0; i < this.levels.length; i++) {
|
|
61
|
+
let s = this.levels[i](ns);
|
|
62
|
+
if (s > specificity) {
|
|
63
|
+
level = i;
|
|
64
|
+
specificity = s;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return level;
|
|
68
|
+
}
|
|
69
|
+
configure(level, config) {
|
|
70
|
+
this.levels[level] = compileLevelConfig(config);
|
|
71
|
+
this.cache = {};
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
exports.Levels = Levels;
|
|
75
|
+
exports.LEVELS = new Levels();
|
|
76
|
+
['TRACE', 'DEBUG', 'INFO', 'WARN', 'ERROR', 'FATAL'].forEach((name, level) => {
|
|
77
|
+
let env = process.env[`SQD_${name}`];
|
|
78
|
+
if (env) {
|
|
79
|
+
exports.LEVELS.configure(level, env);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
//# sourceMappingURL=level.js.map
|
package/lib/level.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"level.js","sourceRoot":"","sources":["../src/level.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"level.test.d.ts","sourceRoot":"","sources":["../src/level.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const assert_1 = __importDefault(require("assert"));
|
|
7
|
+
const level_1 = require("./level");
|
|
8
|
+
function suite(config, tests) {
|
|
9
|
+
let name = config.map(([level, pattern]) => level_1.LogLevel[level] + '=' + pattern).join('; ');
|
|
10
|
+
describe(name ? 'with ' + name : 'by default', function () {
|
|
11
|
+
let levels = new level_1.Levels();
|
|
12
|
+
config.forEach(([level, pattern]) => {
|
|
13
|
+
levels.configure(level, pattern);
|
|
14
|
+
});
|
|
15
|
+
tests.forEach(([ns, level]) => {
|
|
16
|
+
it(ns + '=' + level_1.LogLevel[level], () => {
|
|
17
|
+
assert_1.default.strictEqual(levels.get(ns), level);
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
describe("levels", function () {
|
|
23
|
+
suite([], [
|
|
24
|
+
['foo', level_1.LogLevel.INFO]
|
|
25
|
+
]);
|
|
26
|
+
suite([
|
|
27
|
+
[level_1.LogLevel.DEBUG, '*']
|
|
28
|
+
], [
|
|
29
|
+
['foo', level_1.LogLevel.DEBUG],
|
|
30
|
+
['bar', level_1.LogLevel.DEBUG]
|
|
31
|
+
]);
|
|
32
|
+
suite([
|
|
33
|
+
[level_1.LogLevel.DEBUG, 'foo']
|
|
34
|
+
], [
|
|
35
|
+
['foo', level_1.LogLevel.DEBUG],
|
|
36
|
+
['foo:bar', level_1.LogLevel.DEBUG],
|
|
37
|
+
['foobar', level_1.LogLevel.INFO]
|
|
38
|
+
]);
|
|
39
|
+
suite([
|
|
40
|
+
[level_1.LogLevel.DEBUG, 'foo:*']
|
|
41
|
+
], [
|
|
42
|
+
['foo', level_1.LogLevel.INFO],
|
|
43
|
+
['foo:bar', level_1.LogLevel.DEBUG],
|
|
44
|
+
['foobar', level_1.LogLevel.INFO]
|
|
45
|
+
]);
|
|
46
|
+
suite([
|
|
47
|
+
[level_1.LogLevel.DEBUG, 'foo*bar']
|
|
48
|
+
], [
|
|
49
|
+
['foobar', level_1.LogLevel.DEBUG],
|
|
50
|
+
['foo:bar', level_1.LogLevel.DEBUG],
|
|
51
|
+
['foo:baz:bar:qux', level_1.LogLevel.DEBUG],
|
|
52
|
+
['foobaz', level_1.LogLevel.INFO]
|
|
53
|
+
]);
|
|
54
|
+
suite([
|
|
55
|
+
[level_1.LogLevel.DEBUG, '*'],
|
|
56
|
+
[level_1.LogLevel.WARN, 'foo'],
|
|
57
|
+
[level_1.LogLevel.ERROR, 'foo:*:bar']
|
|
58
|
+
], [
|
|
59
|
+
['bar', level_1.LogLevel.DEBUG],
|
|
60
|
+
['foo', level_1.LogLevel.WARN],
|
|
61
|
+
['foo:bar', level_1.LogLevel.WARN],
|
|
62
|
+
['foo:qux:bar', level_1.LogLevel.ERROR]
|
|
63
|
+
]);
|
|
64
|
+
suite([
|
|
65
|
+
[level_1.LogLevel.DEBUG, 'foo, foo:*:baz'],
|
|
66
|
+
[level_1.LogLevel.WARN, 'foo:*']
|
|
67
|
+
], [
|
|
68
|
+
['foo', level_1.LogLevel.DEBUG],
|
|
69
|
+
['foo:bar:baz', level_1.LogLevel.DEBUG],
|
|
70
|
+
['foo:bar', level_1.LogLevel.WARN]
|
|
71
|
+
]);
|
|
72
|
+
});
|
|
73
|
+
//# sourceMappingURL=level.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"level.test.js","sourceRoot":"","sources":["../src/level.test.ts"],"names":[],"mappings":"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"}
|
package/lib/logger.d.ts
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { LogLevel } from "./level";
|
|
2
|
+
export interface LogRecord {
|
|
3
|
+
time: number;
|
|
4
|
+
level: LogLevel;
|
|
5
|
+
ns: string;
|
|
6
|
+
msg?: string;
|
|
7
|
+
err?: Error;
|
|
8
|
+
}
|
|
9
|
+
export declare type Sink = (rec: LogRecord) => void;
|
|
10
|
+
export declare class Logger {
|
|
11
|
+
private sink;
|
|
12
|
+
private ns;
|
|
13
|
+
private attributes?;
|
|
14
|
+
constructor(sink: Sink, ns: string, attributes?: object | undefined);
|
|
15
|
+
get level(): LogLevel;
|
|
16
|
+
child(attributes: object): Logger;
|
|
17
|
+
child(ns: string, attributes?: object): Logger;
|
|
18
|
+
write(level: LogLevel, msg?: string): void;
|
|
19
|
+
write(level: LogLevel, attributes?: object, msg?: string): void;
|
|
20
|
+
trace(msg?: string): void;
|
|
21
|
+
trace(attributes?: object, msg?: string): void;
|
|
22
|
+
debug(msg?: string): void;
|
|
23
|
+
debug(attributes?: object, msg?: string): void;
|
|
24
|
+
info(msg?: string): void;
|
|
25
|
+
info(attributes?: object, msg?: string): void;
|
|
26
|
+
warn(msg?: string): void;
|
|
27
|
+
warn(attributes?: object, msg?: string): void;
|
|
28
|
+
error(msg?: string): void;
|
|
29
|
+
error(attributes?: object, msg?: string): void;
|
|
30
|
+
fatal(msg?: string | null): void;
|
|
31
|
+
fatal(attributes?: object | null, msg?: string): void;
|
|
32
|
+
isTrace(): boolean;
|
|
33
|
+
isDebug(): boolean;
|
|
34
|
+
isInfo(): boolean;
|
|
35
|
+
isWarn(): boolean;
|
|
36
|
+
isError(): boolean;
|
|
37
|
+
isFatal(): boolean;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,QAAQ,EAAC,MAAM,SAAS,CAAA;AAGxC,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,QAAQ,CAAA;IACf,EAAE,EAAE,MAAM,CAAA;IACV,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,KAAK,CAAA;CACd;AAGD,oBAAY,IAAI,GAAG,CAAC,GAAG,EAAE,SAAS,KAAK,IAAI,CAAA;AAG3C,qBAAa,MAAM;IAEX,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,EAAE;IACV,OAAO,CAAC,UAAU,CAAC;gBAFX,IAAI,EAAE,IAAI,EACV,EAAE,EAAE,MAAM,EACV,UAAU,CAAC,oBAAQ;IAI/B,IAAI,KAAK,IAAI,QAAQ,CAEpB;IAED,KAAK,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IACjC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM;IAkB9C,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAC1C,KAAK,CAAC,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAsB/D,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IACzB,KAAK,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAK9C,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IACzB,KAAK,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAK9C,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IACxB,IAAI,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAK7C,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IACxB,IAAI,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAK7C,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IACzB,KAAK,CAAC,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAK9C,KAAK,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAChC,KAAK,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI;IAKrD,OAAO,IAAI,OAAO;IAIlB,OAAO,IAAI,OAAO;IAIlB,MAAM,IAAI,OAAO;IAIjB,MAAM,IAAI,OAAO;IAIjB,OAAO,IAAI,OAAO;IAIlB,OAAO,IAAI,OAAO;CAGrB"}
|
package/lib/logger.js
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Logger = void 0;
|
|
4
|
+
const level_1 = require("./level");
|
|
5
|
+
class Logger {
|
|
6
|
+
constructor(sink, ns, attributes) {
|
|
7
|
+
this.sink = sink;
|
|
8
|
+
this.ns = ns;
|
|
9
|
+
this.attributes = attributes;
|
|
10
|
+
}
|
|
11
|
+
get level() {
|
|
12
|
+
return level_1.LEVELS.get(this.ns);
|
|
13
|
+
}
|
|
14
|
+
child(nsOrAttributes, attributes) {
|
|
15
|
+
let ns = this.ns;
|
|
16
|
+
if (typeof nsOrAttributes == 'string') {
|
|
17
|
+
ns = ns ? `${ns}:${nsOrAttributes}` : nsOrAttributes;
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
attributes = nsOrAttributes;
|
|
21
|
+
}
|
|
22
|
+
if (this.attributes) {
|
|
23
|
+
if (attributes) {
|
|
24
|
+
attributes = { ...this.attributes, ...attributes };
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
attributes = this.attributes;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return new Logger(this.sink, ns, attributes);
|
|
31
|
+
}
|
|
32
|
+
write(level, attributes, msg) {
|
|
33
|
+
if (attributes == null)
|
|
34
|
+
return;
|
|
35
|
+
if (level < this.level)
|
|
36
|
+
return;
|
|
37
|
+
if (typeof attributes == 'string') {
|
|
38
|
+
msg = attributes;
|
|
39
|
+
attributes = null;
|
|
40
|
+
}
|
|
41
|
+
if (attributes instanceof Error) {
|
|
42
|
+
attributes = { err: attributes };
|
|
43
|
+
}
|
|
44
|
+
let rec = {
|
|
45
|
+
level,
|
|
46
|
+
time: Date.now(),
|
|
47
|
+
ns: this.ns,
|
|
48
|
+
msg
|
|
49
|
+
};
|
|
50
|
+
addAttributes(this.attributes, rec);
|
|
51
|
+
addAttributes(attributes, rec);
|
|
52
|
+
this.sink(rec);
|
|
53
|
+
}
|
|
54
|
+
trace(attributes, msg) {
|
|
55
|
+
this.write(level_1.LogLevel.TRACE, attributes, msg);
|
|
56
|
+
}
|
|
57
|
+
debug(attributes, msg) {
|
|
58
|
+
this.write(level_1.LogLevel.DEBUG, attributes, msg);
|
|
59
|
+
}
|
|
60
|
+
info(attributes, msg) {
|
|
61
|
+
this.write(level_1.LogLevel.INFO, attributes, msg);
|
|
62
|
+
}
|
|
63
|
+
warn(attributes, msg) {
|
|
64
|
+
this.write(level_1.LogLevel.WARN, attributes, msg);
|
|
65
|
+
}
|
|
66
|
+
error(attributes, msg) {
|
|
67
|
+
this.write(level_1.LogLevel.ERROR, attributes, msg);
|
|
68
|
+
}
|
|
69
|
+
fatal(attributes, msg) {
|
|
70
|
+
this.write(level_1.LogLevel.FATAL, attributes, msg);
|
|
71
|
+
}
|
|
72
|
+
isTrace() {
|
|
73
|
+
return this.level <= level_1.LogLevel.TRACE;
|
|
74
|
+
}
|
|
75
|
+
isDebug() {
|
|
76
|
+
return this.level <= level_1.LogLevel.DEBUG;
|
|
77
|
+
}
|
|
78
|
+
isInfo() {
|
|
79
|
+
return this.level <= level_1.LogLevel.INFO;
|
|
80
|
+
}
|
|
81
|
+
isWarn() {
|
|
82
|
+
return this.level <= level_1.LogLevel.WARN;
|
|
83
|
+
}
|
|
84
|
+
isError() {
|
|
85
|
+
return this.level <= level_1.LogLevel.ERROR;
|
|
86
|
+
}
|
|
87
|
+
isFatal() {
|
|
88
|
+
return this.level <= level_1.LogLevel.FATAL;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
exports.Logger = Logger;
|
|
92
|
+
function addAttributes(src, target) {
|
|
93
|
+
for (let key in src) {
|
|
94
|
+
let val = src[key];
|
|
95
|
+
switch (key) {
|
|
96
|
+
case 'time':
|
|
97
|
+
case 'level':
|
|
98
|
+
case 'ns':
|
|
99
|
+
case 'msg':
|
|
100
|
+
break;
|
|
101
|
+
default:
|
|
102
|
+
target[key] = val;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";;;AAAA,mCAAwC;AAexC,MAAa,MAAM;IACf,YACY,IAAU,EACV,EAAU,EACV,UAAmB;QAFnB,SAAI,GAAJ,IAAI,CAAM;QACV,OAAE,GAAF,EAAE,CAAQ;QACV,eAAU,GAAV,UAAU,CAAS;IAE/B,CAAC;IAED,IAAI,KAAK;QACL,OAAO,cAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC9B,CAAC;IAID,KAAK,CAAC,cAA+B,EAAE,UAAmB;QACtD,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAA;QAChB,IAAI,OAAO,cAAc,IAAI,QAAQ,EAAE;YACnC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,cAAc,EAAE,CAAC,CAAC,CAAC,cAAc,CAAA;SACvD;aAAM;YACH,UAAU,GAAG,cAAc,CAAA;SAC9B;QACD,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,UAAU,EAAE;gBACZ,UAAU,GAAG,EAAC,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,UAAU,EAAC,CAAA;aACnD;iBAAM;gBACH,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;aAC/B;SACJ;QACD,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,UAAU,CAAC,CAAA;IAChD,CAAC;IAID,KAAK,CAAC,KAAe,EAAE,UAAgB,EAAE,GAAS;QAC9C,IAAI,UAAU,IAAI,IAAI;YAAE,OAAM;QAC9B,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK;YAAE,OAAM;QAC9B,IAAI,OAAO,UAAU,IAAI,QAAQ,EAAE;YAC/B,GAAG,GAAG,UAAU,CAAA;YAChB,UAAU,GAAG,IAAI,CAAA;SACpB;QACD,IAAI,UAAU,YAAY,KAAK,EAAE;YAC7B,UAAU,GAAG,EAAC,GAAG,EAAE,UAAU,EAAC,CAAA;SACjC;QACD,IAAI,GAAG,GAAQ;YACX,KAAK;YACL,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;YAChB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,GAAG;SACN,CAAA;QACD,aAAa,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;QACnC,aAAa,CAAC,UAAU,EAAE,GAAG,CAAC,CAAA;QAC9B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAClB,CAAC;IAID,KAAK,CAAC,UAAgB,EAAE,GAAS;QAC7B,IAAI,CAAC,KAAK,CAAC,gBAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,CAAA;IAC/C,CAAC;IAID,KAAK,CAAC,UAAgB,EAAE,GAAS;QAC7B,IAAI,CAAC,KAAK,CAAC,gBAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,CAAA;IAC/C,CAAC;IAID,IAAI,CAAC,UAAgB,EAAE,GAAS;QAC5B,IAAI,CAAC,KAAK,CAAC,gBAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,CAAA;IAC9C,CAAC;IAID,IAAI,CAAC,UAAgB,EAAE,GAAS;QAC5B,IAAI,CAAC,KAAK,CAAC,gBAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,CAAA;IAC9C,CAAC;IAID,KAAK,CAAC,UAAgB,EAAE,GAAS;QAC7B,IAAI,CAAC,KAAK,CAAC,gBAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,CAAA;IAC/C,CAAC;IAID,KAAK,CAAC,UAAgB,EAAE,GAAS;QAC7B,IAAI,CAAC,KAAK,CAAC,gBAAQ,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,CAAC,CAAA;IAC/C,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,KAAK,IAAI,gBAAQ,CAAC,KAAK,CAAA;IACvC,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,KAAK,IAAI,gBAAQ,CAAC,KAAK,CAAA;IACvC,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,KAAK,IAAI,gBAAQ,CAAC,IAAI,CAAA;IACtC,CAAC;IAED,MAAM;QACF,OAAO,IAAI,CAAC,KAAK,IAAI,gBAAQ,CAAC,IAAI,CAAA;IACtC,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,KAAK,IAAI,gBAAQ,CAAC,KAAK,CAAA;IACvC,CAAC;IAED,OAAO;QACH,OAAO,IAAI,CAAC,KAAK,IAAI,gBAAQ,CAAC,KAAK,CAAA;IACvC,CAAC;CACJ;AAjHD,wBAiHC;AAGD,SAAS,aAAa,CAAC,GAAQ,EAAE,MAAW;IACxC,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE;QACjB,IAAI,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;QAClB,QAAQ,GAAG,EAAE;YACT,KAAK,MAAM,CAAC;YACZ,KAAK,OAAO,CAAC;YACb,KAAK,IAAI,CAAC;YACV,KAAK,KAAK;gBACN,MAAK;YACT;gBACI,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;SACxB;KACJ;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/sinks/json.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,SAAS,EAAC,MAAM,WAAW,CAAA;AAGnC,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAExD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.jsonLinesStderrSink = void 0;
|
|
4
|
+
const util_internal_json_1 = require("@subsquid/util-internal-json");
|
|
5
|
+
const level_1 = require("../level");
|
|
6
|
+
function jsonLinesStderrSink(rec) {
|
|
7
|
+
process.stderr.write(stringify(rec) + '\n');
|
|
8
|
+
}
|
|
9
|
+
exports.jsonLinesStderrSink = jsonLinesStderrSink;
|
|
10
|
+
function stringify(rec) {
|
|
11
|
+
try {
|
|
12
|
+
return JSON.stringify((0, util_internal_json_1.toJSON)(rec));
|
|
13
|
+
}
|
|
14
|
+
catch (e) {
|
|
15
|
+
return stringify({
|
|
16
|
+
ns: 'sys',
|
|
17
|
+
time: Date.now(),
|
|
18
|
+
level: level_1.LogLevel.ERROR,
|
|
19
|
+
msg: `Failed to serialize log record from ${rec.ns}`,
|
|
20
|
+
err: { stack: e.stack || e.toString() }
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../src/sinks/json.ts"],"names":[],"mappings":";;;AAAA,qEAAmD;AACnD,oCAAiC;AAIjC,SAAgB,mBAAmB,CAAC,GAAc;IAC9C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,CAAA;AAC/C,CAAC;AAFD,kDAEC;AAGD,SAAS,SAAS,CAAC,GAAc;IAC7B,IAAI;QACA,OAAO,IAAI,CAAC,SAAS,CAAC,IAAA,2BAAM,EAAC,GAAG,CAAC,CAAC,CAAA;KACrC;IAAC,OAAM,CAAM,EAAE;QACZ,OAAO,SAAS,CAAC;YACb,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;YAChB,KAAK,EAAE,gBAAQ,CAAC,KAAK;YACrB,GAAG,EAAE,uCAAuC,GAAG,CAAC,EAAE,EAAE;YACpD,GAAG,EAAE,EAAC,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAU;SACjD,CAAC,CAAA;KACL;AACL,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { LogRecord } from "../logger";
|
|
2
|
+
export declare class Printer {
|
|
3
|
+
private out;
|
|
4
|
+
private hasColor;
|
|
5
|
+
private prefix?;
|
|
6
|
+
private visited;
|
|
7
|
+
private style?;
|
|
8
|
+
private seenRecursion;
|
|
9
|
+
constructor(out: (line: string) => void, hasColor: boolean);
|
|
10
|
+
private line;
|
|
11
|
+
private text;
|
|
12
|
+
private begin;
|
|
13
|
+
private end;
|
|
14
|
+
private property;
|
|
15
|
+
print(rec: LogRecord): void;
|
|
16
|
+
reset(): void;
|
|
17
|
+
}
|
|
18
|
+
export declare function prettyStderrSink(rec: LogRecord): void;
|
|
19
|
+
//# sourceMappingURL=pretty.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pretty.d.ts","sourceRoot":"","sources":["../../src/sinks/pretty.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,SAAS,EAAC,MAAM,WAAW,CAAA;AAGnC,qBAAa,OAAO;IAMJ,OAAO,CAAC,GAAG;IAA0B,OAAO,CAAC,QAAQ;IALjE,OAAO,CAAC,MAAM,CAAC,CAAQ;IACvB,OAAO,CAAC,OAAO,CAAY;IAC3B,OAAO,CAAC,KAAK,CAAC,CAA+B;IAC7C,OAAO,CAAC,aAAa,CAAQ;gBAET,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,EAAU,QAAQ,EAAE,OAAO;IAE1E,OAAO,CAAC,IAAI;IAWZ,OAAO,CAAC,IAAI;IAMZ,OAAO,CAAC,KAAK;IAQb,OAAO,CAAC,GAAG;IAKX,OAAO,CAAC,QAAQ;IAmEhB,KAAK,CAAC,GAAG,EAAE,SAAS;IAiCpB,KAAK,IAAI,IAAI;CAMhB;AAkFD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAcrD"}
|