@logtail/pino 0.0.4 → 0.1.16
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 +3 -3
- package/dist/cjs/pino-loki-index.d.ts +6 -2
- package/dist/cjs/pino.test.js +89 -87
- package/dist/es6/pino-loki-index.d.ts +6 -2
- package/dist/es6/pino.test.js +84 -84
- package/package.json +7 -5
package/README.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# [Logtail](https://betterstack.com/logtail) JavaScript Pino transport by [Better Stack](https://betterstack.com/)
|
|
2
|
-
|
|
2
|
+
|
|
3
3
|
[](https://betterstack.com/logtail)
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
[](LICENSE.md)
|
|
6
|
+
[](https://github.com/logtail/logtail-js/blob/master/LICENSE.md)
|
|
7
7
|
[](https://www.npmjs.com/package/@logtail/pino)
|
|
8
8
|
|
|
9
9
|
Experience SQL-compatible structured log management based on ClickHouse. [Learn more ⇗](https://logtail.com/)
|
|
@@ -17,4 +17,4 @@ Please let us know at [hello@betterstack.com](mailto:hello@betterstack.com). We'
|
|
|
17
17
|
|
|
18
18
|
---
|
|
19
19
|
|
|
20
|
-
[ISC license](LICENSE.md), [contributing guidelines](
|
|
20
|
+
[ISC license](https://github.com/logtail/logtail-js/blob/master/LICENSE.md), [contributing guidelines](https://github.com/logtail/logtail-js/blob/master/CONTRIBUTING.md).
|
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { PinoLokiOptionsContract } from
|
|
3
|
-
export default function
|
|
2
|
+
import { PinoLokiOptionsContract } from "./Contracts";
|
|
3
|
+
export default function(
|
|
4
|
+
options: PinoLokiOptionsContract
|
|
5
|
+
): Promise<
|
|
6
|
+
import("stream").Transform & import("pino-abstract-transport").OnUnknown
|
|
7
|
+
>;
|
package/dist/cjs/pino.test.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault =
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
var __importDefault =
|
|
3
|
+
(this && this.__importDefault) ||
|
|
4
|
+
function(mod) {
|
|
5
|
+
return mod && mod.__esModule ? mod : { default: mod };
|
|
6
|
+
};
|
|
5
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
8
|
const pino_1 = __importDefault(require("pino"));
|
|
7
9
|
const node_1 = require("@logtail/node");
|
|
@@ -15,14 +17,14 @@ const message = "Something to do with something";
|
|
|
15
17
|
*
|
|
16
18
|
*/
|
|
17
19
|
function createLogger() {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
20
|
+
const token = "invalid source token";
|
|
21
|
+
const logtailOptions = { ignoreExceptions: true };
|
|
22
|
+
const options = { sourceToken: token, options: logtailOptions };
|
|
23
|
+
const transport = pino_1.default.transport({
|
|
24
|
+
target: "./pino.js",
|
|
25
|
+
options: options
|
|
26
|
+
});
|
|
27
|
+
return pino_1.default(transport);
|
|
26
28
|
}
|
|
27
29
|
/**
|
|
28
30
|
* Test a Bunyan log level vs. a Logtail `LogLevel`
|
|
@@ -32,86 +34,86 @@ function createLogger() {
|
|
|
32
34
|
* @param cb Function - Callback to execute to signal test completion
|
|
33
35
|
*/
|
|
34
36
|
async function testLevel(level, logLevel, cb) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
37
|
+
// Logtail fixtures
|
|
38
|
+
const logtail = new node_1.Logtail("test", { batchInterval: 1 });
|
|
39
|
+
logtail.setSync(async logs => {
|
|
40
|
+
// Should be exactly one log
|
|
41
|
+
expect(logs.length).toBe(1);
|
|
42
|
+
// Message should match
|
|
43
|
+
expect(logs[0].message).toBe(message);
|
|
44
|
+
// Log level should be 'info'
|
|
45
|
+
expect(logs[0].level).toBe(logLevel);
|
|
46
|
+
// Signal that the test has finished
|
|
47
|
+
setImmediate(() => cb());
|
|
48
|
+
return logs;
|
|
49
|
+
});
|
|
50
|
+
// Create Bunyan logger
|
|
51
|
+
const logger = createLogger(logtail);
|
|
52
|
+
// Log out to Bunyan
|
|
53
|
+
logger[level](message);
|
|
52
54
|
}
|
|
53
55
|
describe("Bunyan tests", () => {
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
56
|
+
it("should log at the 'debug' level", async done => {
|
|
57
|
+
return testLevel("debug", types_1.LogLevel.Debug, done);
|
|
58
|
+
});
|
|
59
|
+
it("should log at the 'info' level", async done => {
|
|
60
|
+
return testLevel("info", types_1.LogLevel.Info, done);
|
|
61
|
+
});
|
|
62
|
+
it("should log at the 'warn' level", async done => {
|
|
63
|
+
return testLevel("warn", types_1.LogLevel.Warn, done);
|
|
64
|
+
});
|
|
65
|
+
it("should log at the 'error' level", async done => {
|
|
66
|
+
return testLevel("error", types_1.LogLevel.Error, done);
|
|
67
|
+
});
|
|
68
|
+
it("should log at the 'fatal' level", async done => {
|
|
69
|
+
return testLevel("fatal", types_1.LogLevel.Error, done);
|
|
70
|
+
});
|
|
71
|
+
it("should log using number levels", async done => {
|
|
72
|
+
// Fixtures
|
|
73
|
+
const levels = [
|
|
74
|
+
[25, types_1.LogLevel.Debug, "debug"],
|
|
75
|
+
[35, types_1.LogLevel.Info, "info"],
|
|
76
|
+
[45, types_1.LogLevel.Warn, "warn"],
|
|
77
|
+
[55, types_1.LogLevel.Error, "error"]
|
|
78
|
+
];
|
|
79
|
+
const logtail = new node_1.Logtail("test", {
|
|
80
|
+
batchInterval: 1000,
|
|
81
|
+
batchSize: levels.length
|
|
62
82
|
});
|
|
63
|
-
|
|
64
|
-
|
|
83
|
+
logtail.setSync(async logs => {
|
|
84
|
+
expect(logs.length).toBe(levels.length);
|
|
85
|
+
done();
|
|
86
|
+
return logs;
|
|
65
87
|
});
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
});
|
|
81
|
-
logtail.setSync(async (logs) => {
|
|
82
|
-
expect(logs.length).toBe(levels.length);
|
|
83
|
-
done();
|
|
84
|
-
return logs;
|
|
85
|
-
});
|
|
86
|
-
// Create Bunyan logger
|
|
87
|
-
const logger = createLogger(logtail);
|
|
88
|
-
// Cycle through levels, and log
|
|
89
|
-
levels.forEach(level => logger[level[2]](message));
|
|
90
|
-
});
|
|
91
|
-
it("should include arbitrary extra data fields", async (done) => {
|
|
92
|
-
const logtail = new node_1.Logtail("test");
|
|
93
|
-
logtail.setSync(async (logs) => {
|
|
94
|
-
expect(logs).toHaveLength(1);
|
|
95
|
-
expect(logs[0].message).toEqual("i am the message");
|
|
96
|
-
expect(logs[0].foo).toEqual("bar");
|
|
97
|
-
expect(logs[0].some).toEqual({ nested: "stuff" });
|
|
98
|
-
done();
|
|
99
|
-
return logs;
|
|
100
|
-
});
|
|
101
|
-
const logger = createLogger(logtail);
|
|
102
|
-
logger.info({ foo: "bar", some: { nested: "stuff" } }, "i am the message");
|
|
88
|
+
// Create Bunyan logger
|
|
89
|
+
const logger = createLogger(logtail);
|
|
90
|
+
// Cycle through levels, and log
|
|
91
|
+
levels.forEach(level => logger[level[2]](message));
|
|
92
|
+
});
|
|
93
|
+
it("should include arbitrary extra data fields", async done => {
|
|
94
|
+
const logtail = new node_1.Logtail("test");
|
|
95
|
+
logtail.setSync(async logs => {
|
|
96
|
+
expect(logs).toHaveLength(1);
|
|
97
|
+
expect(logs[0].message).toEqual("i am the message");
|
|
98
|
+
expect(logs[0].foo).toEqual("bar");
|
|
99
|
+
expect(logs[0].some).toEqual({ nested: "stuff" });
|
|
100
|
+
done();
|
|
101
|
+
return logs;
|
|
103
102
|
});
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
103
|
+
const logger = createLogger(logtail);
|
|
104
|
+
logger.info({ foo: "bar", some: { nested: "stuff" } }, "i am the message");
|
|
105
|
+
});
|
|
106
|
+
it("should include correct context fields", async done => {
|
|
107
|
+
const logtail = new node_1.Logtail("test");
|
|
108
|
+
logtail.setSync(async logs => {
|
|
109
|
+
const context = logs[0].context;
|
|
110
|
+
const runtime = context.runtime;
|
|
111
|
+
expect(runtime.file).toEqual("bunyan.test.ts");
|
|
112
|
+
done();
|
|
113
|
+
return logs;
|
|
115
114
|
});
|
|
115
|
+
const logger = createLogger(logtail);
|
|
116
|
+
logger.info("message with context");
|
|
117
|
+
});
|
|
116
118
|
});
|
|
117
|
-
//# sourceMappingURL=pino.test.js.map
|
|
119
|
+
//# sourceMappingURL=pino.test.js.map
|
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
import { PinoLokiOptionsContract } from
|
|
3
|
-
export default function
|
|
2
|
+
import { PinoLokiOptionsContract } from "./Contracts";
|
|
3
|
+
export default function(
|
|
4
|
+
options: PinoLokiOptionsContract
|
|
5
|
+
): Promise<
|
|
6
|
+
import("stream").Transform & import("pino-abstract-transport").OnUnknown
|
|
7
|
+
>;
|
package/dist/es6/pino.test.js
CHANGED
|
@@ -10,14 +10,14 @@ const message = "Something to do with something";
|
|
|
10
10
|
*
|
|
11
11
|
*/
|
|
12
12
|
function createLogger() {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
const token = "invalid source token";
|
|
14
|
+
const logtailOptions = { ignoreExceptions: true };
|
|
15
|
+
const options = { sourceToken: token, options: logtailOptions };
|
|
16
|
+
const transport = pino.transport({
|
|
17
|
+
target: "./pino.js",
|
|
18
|
+
options: options
|
|
19
|
+
});
|
|
20
|
+
return pino(transport);
|
|
21
21
|
}
|
|
22
22
|
/**
|
|
23
23
|
* Test a Bunyan log level vs. a Logtail `LogLevel`
|
|
@@ -27,86 +27,86 @@ function createLogger() {
|
|
|
27
27
|
* @param cb Function - Callback to execute to signal test completion
|
|
28
28
|
*/
|
|
29
29
|
async function testLevel(level, logLevel, cb) {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
30
|
+
// Logtail fixtures
|
|
31
|
+
const logtail = new Logtail("test", { batchInterval: 1 });
|
|
32
|
+
logtail.setSync(async logs => {
|
|
33
|
+
// Should be exactly one log
|
|
34
|
+
expect(logs.length).toBe(1);
|
|
35
|
+
// Message should match
|
|
36
|
+
expect(logs[0].message).toBe(message);
|
|
37
|
+
// Log level should be 'info'
|
|
38
|
+
expect(logs[0].level).toBe(logLevel);
|
|
39
|
+
// Signal that the test has finished
|
|
40
|
+
setImmediate(() => cb());
|
|
41
|
+
return logs;
|
|
42
|
+
});
|
|
43
|
+
// Create Bunyan logger
|
|
44
|
+
const logger = createLogger(logtail);
|
|
45
|
+
// Log out to Bunyan
|
|
46
|
+
logger[level](message);
|
|
47
47
|
}
|
|
48
48
|
describe("Bunyan tests", () => {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
49
|
+
it("should log at the 'debug' level", async done => {
|
|
50
|
+
return testLevel("debug", LogLevel.Debug, done);
|
|
51
|
+
});
|
|
52
|
+
it("should log at the 'info' level", async done => {
|
|
53
|
+
return testLevel("info", LogLevel.Info, done);
|
|
54
|
+
});
|
|
55
|
+
it("should log at the 'warn' level", async done => {
|
|
56
|
+
return testLevel("warn", LogLevel.Warn, done);
|
|
57
|
+
});
|
|
58
|
+
it("should log at the 'error' level", async done => {
|
|
59
|
+
return testLevel("error", LogLevel.Error, done);
|
|
60
|
+
});
|
|
61
|
+
it("should log at the 'fatal' level", async done => {
|
|
62
|
+
return testLevel("fatal", LogLevel.Error, done);
|
|
63
|
+
});
|
|
64
|
+
it("should log using number levels", async done => {
|
|
65
|
+
// Fixtures
|
|
66
|
+
const levels = [
|
|
67
|
+
[25, LogLevel.Debug, "debug"],
|
|
68
|
+
[35, LogLevel.Info, "info"],
|
|
69
|
+
[45, LogLevel.Warn, "warn"],
|
|
70
|
+
[55, LogLevel.Error, "error"]
|
|
71
|
+
];
|
|
72
|
+
const logtail = new Logtail("test", {
|
|
73
|
+
batchInterval: 1000,
|
|
74
|
+
batchSize: levels.length
|
|
57
75
|
});
|
|
58
|
-
|
|
59
|
-
|
|
76
|
+
logtail.setSync(async logs => {
|
|
77
|
+
expect(logs.length).toBe(levels.length);
|
|
78
|
+
done();
|
|
79
|
+
return logs;
|
|
60
80
|
});
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
});
|
|
76
|
-
logtail.setSync(async (logs) => {
|
|
77
|
-
expect(logs.length).toBe(levels.length);
|
|
78
|
-
done();
|
|
79
|
-
return logs;
|
|
80
|
-
});
|
|
81
|
-
// Create Bunyan logger
|
|
82
|
-
const logger = createLogger(logtail);
|
|
83
|
-
// Cycle through levels, and log
|
|
84
|
-
levels.forEach(level => logger[level[2]](message));
|
|
85
|
-
});
|
|
86
|
-
it("should include arbitrary extra data fields", async (done) => {
|
|
87
|
-
const logtail = new Logtail("test");
|
|
88
|
-
logtail.setSync(async (logs) => {
|
|
89
|
-
expect(logs).toHaveLength(1);
|
|
90
|
-
expect(logs[0].message).toEqual("i am the message");
|
|
91
|
-
expect(logs[0].foo).toEqual("bar");
|
|
92
|
-
expect(logs[0].some).toEqual({ nested: "stuff" });
|
|
93
|
-
done();
|
|
94
|
-
return logs;
|
|
95
|
-
});
|
|
96
|
-
const logger = createLogger(logtail);
|
|
97
|
-
logger.info({ foo: "bar", some: { nested: "stuff" } }, "i am the message");
|
|
81
|
+
// Create Bunyan logger
|
|
82
|
+
const logger = createLogger(logtail);
|
|
83
|
+
// Cycle through levels, and log
|
|
84
|
+
levels.forEach(level => logger[level[2]](message));
|
|
85
|
+
});
|
|
86
|
+
it("should include arbitrary extra data fields", async done => {
|
|
87
|
+
const logtail = new Logtail("test");
|
|
88
|
+
logtail.setSync(async logs => {
|
|
89
|
+
expect(logs).toHaveLength(1);
|
|
90
|
+
expect(logs[0].message).toEqual("i am the message");
|
|
91
|
+
expect(logs[0].foo).toEqual("bar");
|
|
92
|
+
expect(logs[0].some).toEqual({ nested: "stuff" });
|
|
93
|
+
done();
|
|
94
|
+
return logs;
|
|
98
95
|
});
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
96
|
+
const logger = createLogger(logtail);
|
|
97
|
+
logger.info({ foo: "bar", some: { nested: "stuff" } }, "i am the message");
|
|
98
|
+
});
|
|
99
|
+
it("should include correct context fields", async done => {
|
|
100
|
+
const logtail = new Logtail("test");
|
|
101
|
+
logtail.setSync(async logs => {
|
|
102
|
+
const context = logs[0].context;
|
|
103
|
+
const runtime = context.runtime;
|
|
104
|
+
expect(runtime.file).toEqual("bunyan.test.ts");
|
|
105
|
+
done();
|
|
106
|
+
return logs;
|
|
110
107
|
});
|
|
108
|
+
const logger = createLogger(logtail);
|
|
109
|
+
logger.info("message with context");
|
|
110
|
+
});
|
|
111
111
|
});
|
|
112
|
-
//# sourceMappingURL=pino.test.js.map
|
|
112
|
+
//# sourceMappingURL=pino.test.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@logtail/pino",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1.16",
|
|
4
4
|
"description": "Logtail Pino transport by Better Stack",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Better Stack",
|
|
@@ -34,11 +34,12 @@
|
|
|
34
34
|
"typescript": "^3.9.7"
|
|
35
35
|
},
|
|
36
36
|
"peerDependencies": {
|
|
37
|
-
"pino": "^7.0.0"
|
|
37
|
+
"pino": "^7.0.0 || ^8.0.0"
|
|
38
38
|
},
|
|
39
39
|
"dependencies": {
|
|
40
|
-
"@logtail/node": "^0.1.
|
|
41
|
-
"@logtail/types": "^0.1.
|
|
40
|
+
"@logtail/node": "^0.1.16",
|
|
41
|
+
"@logtail/types": "^0.1.16",
|
|
42
|
+
"pino-abstract-transport": "^1.0.0"
|
|
42
43
|
},
|
|
43
44
|
"scripts": {
|
|
44
45
|
"build:cjs": "tsc",
|
|
@@ -47,5 +48,6 @@
|
|
|
47
48
|
"prepublishOnly": "npm run build",
|
|
48
49
|
"test": "echo \"Error: run tests from root\" && exit 1"
|
|
49
50
|
},
|
|
50
|
-
"private": false
|
|
51
|
+
"private": false,
|
|
52
|
+
"gitHead": "c4ff2b738149580659197f46e054ea27ad1c924c"
|
|
51
53
|
}
|