@logtail/pino 0.4.6 → 0.4.10
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 +1 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/pino.d.ts +2 -1
- package/dist/cjs/pino.js +54 -35
- package/dist/cjs/pino.js.map +1 -1
- package/dist/es6/index.js.map +1 -1
- package/dist/es6/pino.d.ts +2 -1
- package/dist/es6/pino.js +54 -35
- package/dist/es6/pino.js.map +1 -1
- package/package.json +5 -6
- package/src/index.ts +1 -2
- package/src/pino.ts +33 -14
package/README.md
CHANGED
|
@@ -14,6 +14,7 @@ Experience SQL-compatible structured log management based on ClickHouse. [Learn
|
|
|
14
14
|
[Getting started ⇗](https://betterstack.com/docs/logs/javascript/pino)
|
|
15
15
|
|
|
16
16
|
## Need help?
|
|
17
|
+
|
|
17
18
|
Please let us know at [hello@betterstack.com](mailto:hello@betterstack.com). We're happy to help!
|
|
18
19
|
|
|
19
20
|
---
|
package/dist/cjs/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;AAAA,iCAA0C;AAE1C,kBAAe,uBAAgB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;AAAA,iCAA0C;AAE1C,kBAAe,uBAAgB,CAAC"}
|
package/dist/cjs/pino.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
+
import build from "pino-abstract-transport";
|
|
2
3
|
import { ILogtailOptions } from "@logtail/types";
|
|
3
4
|
export interface PinoLog {
|
|
4
5
|
level: number;
|
|
@@ -8,4 +9,4 @@ export interface IPinoLogtailOptions {
|
|
|
8
9
|
sourceToken: string;
|
|
9
10
|
options: Partial<ILogtailOptions>;
|
|
10
11
|
}
|
|
11
|
-
export declare function logtailTransport(options: IPinoLogtailOptions): Promise<import("stream").Transform &
|
|
12
|
+
export declare function logtailTransport(options: IPinoLogtailOptions): Promise<import("stream").Transform & build.OnUnknown>;
|
package/dist/cjs/pino.js
CHANGED
|
@@ -14,52 +14,71 @@ exports.logtailTransport = void 0;
|
|
|
14
14
|
const pino_abstract_transport_1 = __importDefault(require("pino-abstract-transport"));
|
|
15
15
|
const node_1 = require("@logtail/node");
|
|
16
16
|
const helpers_1 = require("./helpers");
|
|
17
|
-
const stackContextHint = {
|
|
17
|
+
const stackContextHint = {
|
|
18
|
+
fileName: "node_modules/pino",
|
|
19
|
+
methodNames: [
|
|
20
|
+
"log",
|
|
21
|
+
"fatal",
|
|
22
|
+
"error",
|
|
23
|
+
"warn",
|
|
24
|
+
"info",
|
|
25
|
+
"debug",
|
|
26
|
+
"trace",
|
|
27
|
+
"silent",
|
|
28
|
+
],
|
|
29
|
+
};
|
|
18
30
|
async function logtailTransport(options) {
|
|
19
31
|
const logtail = new node_1.Logtail(options.sourceToken, options.options);
|
|
20
32
|
const buildFunc = async (source) => {
|
|
21
|
-
var e_1,
|
|
33
|
+
var _a, e_1, _b, _c;
|
|
22
34
|
try {
|
|
23
|
-
for (var source_1 = __asyncValues(source), source_1_1; source_1_1 = await source_1.next(),
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const meta = {};
|
|
27
|
-
// Copy `time` if set
|
|
28
|
-
if (typeof obj.time === "string" || obj.time.length) {
|
|
29
|
-
const time = new Date(obj.time);
|
|
30
|
-
if (!isNaN(time.valueOf())) {
|
|
31
|
-
meta.dt = time;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
// Carry over any additional data fields
|
|
35
|
-
Object.keys(obj)
|
|
36
|
-
.filter(key => ["time", "msg", "message", "level", "v"].indexOf(key) < 0)
|
|
37
|
-
.forEach(key => (meta[key] = obj[key]));
|
|
38
|
-
// Get message
|
|
39
|
-
// NOTE: Pino passes messages as obj.msg but if user passes object to Pino it will pass it to us
|
|
40
|
-
// even without 'msg' field. Later we map 'msg' -> 'message' so let's also read 'message' field.
|
|
41
|
-
const msg = obj.msg || obj.message;
|
|
42
|
-
// Prevent overriding 'message' with 'msg'
|
|
43
|
-
if (obj.msg !== undefined && obj.message !== undefined) {
|
|
44
|
-
meta['message_field'] = obj.message;
|
|
45
|
-
}
|
|
46
|
-
// Determine the log level
|
|
47
|
-
let level;
|
|
35
|
+
for (var _d = true, source_1 = __asyncValues(source), source_1_1; source_1_1 = await source_1.next(), _a = source_1_1.done, !_a;) {
|
|
36
|
+
_c = source_1_1.value;
|
|
37
|
+
_d = false;
|
|
48
38
|
try {
|
|
49
|
-
|
|
39
|
+
let obj = _c;
|
|
40
|
+
// Logging meta data
|
|
41
|
+
const meta = {};
|
|
42
|
+
// Copy `time` if set
|
|
43
|
+
if (typeof obj.time === "string" || obj.time.length) {
|
|
44
|
+
const time = new Date(obj.time);
|
|
45
|
+
if (!isNaN(time.valueOf())) {
|
|
46
|
+
meta.dt = time;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
// Carry over any additional data fields
|
|
50
|
+
Object.keys(obj)
|
|
51
|
+
.filter(key => ["time", "msg", "message", "level", "v"].indexOf(key) < 0)
|
|
52
|
+
.forEach(key => (meta[key] = obj[key]));
|
|
53
|
+
// Get message
|
|
54
|
+
// NOTE: Pino passes messages as obj.msg but if user passes object to Pino it will pass it to us
|
|
55
|
+
// even without 'msg' field. Later we map 'msg' -> 'message' so let's also read 'message' field.
|
|
56
|
+
const msg = obj.msg || obj.message;
|
|
57
|
+
// Prevent overriding 'message' with 'msg'
|
|
58
|
+
if (obj.msg !== undefined && obj.message !== undefined) {
|
|
59
|
+
meta["message_field"] = obj.message;
|
|
60
|
+
}
|
|
61
|
+
// Determine the log level
|
|
62
|
+
let level;
|
|
63
|
+
try {
|
|
64
|
+
level = (0, helpers_1.getLogLevel)(obj.level);
|
|
65
|
+
}
|
|
66
|
+
catch (_) {
|
|
67
|
+
console.error("Error while mapping log level.");
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
// Log to Logtail
|
|
71
|
+
logtail.log(msg, level, meta, stackContextHint);
|
|
50
72
|
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
continue;
|
|
73
|
+
finally {
|
|
74
|
+
_d = true;
|
|
54
75
|
}
|
|
55
|
-
// Log to Logtail
|
|
56
|
-
logtail.log(msg, level, meta, stackContextHint);
|
|
57
76
|
}
|
|
58
77
|
}
|
|
59
78
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
60
79
|
finally {
|
|
61
80
|
try {
|
|
62
|
-
if (
|
|
81
|
+
if (!_d && !_a && (_b = source_1.return)) await _b.call(source_1);
|
|
63
82
|
}
|
|
64
83
|
finally { if (e_1) throw e_1.error; }
|
|
65
84
|
}
|
|
@@ -67,7 +86,7 @@ async function logtailTransport(options) {
|
|
|
67
86
|
const closeFunc = async () => {
|
|
68
87
|
return await logtail.flush();
|
|
69
88
|
};
|
|
70
|
-
return pino_abstract_transport_1.default(buildFunc, { close: closeFunc });
|
|
89
|
+
return (0, pino_abstract_transport_1.default)(buildFunc, { close: closeFunc });
|
|
71
90
|
}
|
|
72
91
|
exports.logtailTransport = logtailTransport;
|
|
73
92
|
//# sourceMappingURL=pino.js.map
|
package/dist/cjs/pino.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pino.js","sourceRoot":"","sources":["../../src/pino.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"pino.js","sourceRoot":"","sources":["../../src/pino.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,sFAA4C;AAE5C,wCAAwC;AAQxC,uCAAwC;AAiBxC,MAAM,gBAAgB,GAAG;IACvB,QAAQ,EAAE,mBAAmB;IAC7B,WAAW,EAAE;QACX,KAAK;QACL,OAAO;QACP,OAAO;QACP,MAAM;QACN,MAAM;QACN,OAAO;QACP,OAAO;QACP,QAAQ;KACT;CACF,CAAC;AAEK,KAAK,UAAU,gBAAgB,CAAC,OAA4B;IACjE,MAAM,OAAO,GAAG,IAAI,cAAO,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAElE,MAAM,SAAS,GAAG,KAAK,EAAE,MAAW,EAAE,EAAE;;;YACtC,KAAsB,eAAA,WAAA,cAAA,MAAM,CAAA,YAAA;gBAAN,sBAAM;gBAAN,WAAM;;oBAAjB,IAAI,GAAG,KAAA,CAAA;oBAChB,oBAAoB;oBACpB,MAAM,IAAI,GAAY,EAAE,CAAC;oBAEzB,qBAAqB;oBACrB,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE;wBACnD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBAChC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;4BAC1B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;yBAChB;qBACF;oBAED,wCAAwC;oBACxC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;yBACb,MAAM,CACL,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CACjE;yBACA,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAE1C,cAAc;oBACd,gGAAgG;oBAChG,sGAAsG;oBACtG,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;oBAEnC,0CAA0C;oBAC1C,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE;wBACtD,IAAI,CAAC,eAAe,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;qBACrC;oBAED,0BAA0B;oBAC1B,IAAI,KAAe,CAAC;oBAEpB,IAAI;wBACF,KAAK,GAAG,IAAA,qBAAW,EAAC,GAAG,CAAC,KAAK,CAAC,CAAC;qBAChC;oBAAC,OAAO,CAAC,EAAE;wBACV,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;wBAChD,SAAS;qBACV;oBAED,iBAAiB;oBACjB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAoC,CAAC,CAAC;;;;;aACrE;;;;;;;;;IACH,CAAC,CAAC;IACF,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE;QAC3B,OAAO,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC,CAAC;IACF,OAAO,IAAA,iCAAK,EAAC,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;AAChD,CAAC;AAnDD,4CAmDC"}
|
package/dist/es6/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAE1C,eAAe,gBAAgB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAE1C,eAAe,gBAAgB,CAAC"}
|
package/dist/es6/pino.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
+
import build from "pino-abstract-transport";
|
|
2
3
|
import { ILogtailOptions } from "@logtail/types";
|
|
3
4
|
export interface PinoLog {
|
|
4
5
|
level: number;
|
|
@@ -8,4 +9,4 @@ export interface IPinoLogtailOptions {
|
|
|
8
9
|
sourceToken: string;
|
|
9
10
|
options: Partial<ILogtailOptions>;
|
|
10
11
|
}
|
|
11
|
-
export declare function logtailTransport(options: IPinoLogtailOptions): Promise<import("stream").Transform &
|
|
12
|
+
export declare function logtailTransport(options: IPinoLogtailOptions): Promise<import("stream").Transform & build.OnUnknown>;
|
package/dist/es6/pino.js
CHANGED
|
@@ -5,55 +5,74 @@ var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
|
5
5
|
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
|
|
6
6
|
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
7
7
|
};
|
|
8
|
-
import build from
|
|
8
|
+
import build from "pino-abstract-transport";
|
|
9
9
|
import { Logtail } from "@logtail/node";
|
|
10
10
|
import { getLogLevel } from "./helpers";
|
|
11
|
-
const stackContextHint = {
|
|
11
|
+
const stackContextHint = {
|
|
12
|
+
fileName: "node_modules/pino",
|
|
13
|
+
methodNames: [
|
|
14
|
+
"log",
|
|
15
|
+
"fatal",
|
|
16
|
+
"error",
|
|
17
|
+
"warn",
|
|
18
|
+
"info",
|
|
19
|
+
"debug",
|
|
20
|
+
"trace",
|
|
21
|
+
"silent",
|
|
22
|
+
],
|
|
23
|
+
};
|
|
12
24
|
export async function logtailTransport(options) {
|
|
13
25
|
const logtail = new Logtail(options.sourceToken, options.options);
|
|
14
26
|
const buildFunc = async (source) => {
|
|
15
|
-
var e_1,
|
|
27
|
+
var _a, e_1, _b, _c;
|
|
16
28
|
try {
|
|
17
|
-
for (var source_1 = __asyncValues(source), source_1_1; source_1_1 = await source_1.next(),
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
const meta = {};
|
|
21
|
-
// Copy `time` if set
|
|
22
|
-
if (typeof obj.time === "string" || obj.time.length) {
|
|
23
|
-
const time = new Date(obj.time);
|
|
24
|
-
if (!isNaN(time.valueOf())) {
|
|
25
|
-
meta.dt = time;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
// Carry over any additional data fields
|
|
29
|
-
Object.keys(obj)
|
|
30
|
-
.filter(key => ["time", "msg", "message", "level", "v"].indexOf(key) < 0)
|
|
31
|
-
.forEach(key => (meta[key] = obj[key]));
|
|
32
|
-
// Get message
|
|
33
|
-
// NOTE: Pino passes messages as obj.msg but if user passes object to Pino it will pass it to us
|
|
34
|
-
// even without 'msg' field. Later we map 'msg' -> 'message' so let's also read 'message' field.
|
|
35
|
-
const msg = obj.msg || obj.message;
|
|
36
|
-
// Prevent overriding 'message' with 'msg'
|
|
37
|
-
if (obj.msg !== undefined && obj.message !== undefined) {
|
|
38
|
-
meta['message_field'] = obj.message;
|
|
39
|
-
}
|
|
40
|
-
// Determine the log level
|
|
41
|
-
let level;
|
|
29
|
+
for (var _d = true, source_1 = __asyncValues(source), source_1_1; source_1_1 = await source_1.next(), _a = source_1_1.done, !_a;) {
|
|
30
|
+
_c = source_1_1.value;
|
|
31
|
+
_d = false;
|
|
42
32
|
try {
|
|
43
|
-
|
|
33
|
+
let obj = _c;
|
|
34
|
+
// Logging meta data
|
|
35
|
+
const meta = {};
|
|
36
|
+
// Copy `time` if set
|
|
37
|
+
if (typeof obj.time === "string" || obj.time.length) {
|
|
38
|
+
const time = new Date(obj.time);
|
|
39
|
+
if (!isNaN(time.valueOf())) {
|
|
40
|
+
meta.dt = time;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// Carry over any additional data fields
|
|
44
|
+
Object.keys(obj)
|
|
45
|
+
.filter(key => ["time", "msg", "message", "level", "v"].indexOf(key) < 0)
|
|
46
|
+
.forEach(key => (meta[key] = obj[key]));
|
|
47
|
+
// Get message
|
|
48
|
+
// NOTE: Pino passes messages as obj.msg but if user passes object to Pino it will pass it to us
|
|
49
|
+
// even without 'msg' field. Later we map 'msg' -> 'message' so let's also read 'message' field.
|
|
50
|
+
const msg = obj.msg || obj.message;
|
|
51
|
+
// Prevent overriding 'message' with 'msg'
|
|
52
|
+
if (obj.msg !== undefined && obj.message !== undefined) {
|
|
53
|
+
meta["message_field"] = obj.message;
|
|
54
|
+
}
|
|
55
|
+
// Determine the log level
|
|
56
|
+
let level;
|
|
57
|
+
try {
|
|
58
|
+
level = getLogLevel(obj.level);
|
|
59
|
+
}
|
|
60
|
+
catch (_) {
|
|
61
|
+
console.error("Error while mapping log level.");
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
// Log to Logtail
|
|
65
|
+
logtail.log(msg, level, meta, stackContextHint);
|
|
44
66
|
}
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
continue;
|
|
67
|
+
finally {
|
|
68
|
+
_d = true;
|
|
48
69
|
}
|
|
49
|
-
// Log to Logtail
|
|
50
|
-
logtail.log(msg, level, meta, stackContextHint);
|
|
51
70
|
}
|
|
52
71
|
}
|
|
53
72
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
54
73
|
finally {
|
|
55
74
|
try {
|
|
56
|
-
if (
|
|
75
|
+
if (!_d && !_a && (_b = source_1.return)) await _b.call(source_1);
|
|
57
76
|
}
|
|
58
77
|
finally { if (e_1) throw e_1.error; }
|
|
59
78
|
}
|
package/dist/es6/pino.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pino.js","sourceRoot":"","sources":["../../src/pino.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,KAAK,MAAM,yBAAyB,
|
|
1
|
+
{"version":3,"file":"pino.js","sourceRoot":"","sources":["../../src/pino.ts"],"names":[],"mappings":";;;;;;;AAAA,OAAO,KAAK,MAAM,yBAAyB,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAQxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAiBxC,MAAM,gBAAgB,GAAG;IACvB,QAAQ,EAAE,mBAAmB;IAC7B,WAAW,EAAE;QACX,KAAK;QACL,OAAO;QACP,OAAO;QACP,MAAM;QACN,MAAM;QACN,OAAO;QACP,OAAO;QACP,QAAQ;KACT;CACF,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAA4B;IACjE,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAElE,MAAM,SAAS,GAAG,KAAK,EAAE,MAAW,EAAE,EAAE;;;YACtC,KAAsB,eAAA,WAAA,cAAA,MAAM,CAAA,YAAA;gBAAN,sBAAM;gBAAN,WAAM;;oBAAjB,IAAI,GAAG,KAAA,CAAA;oBAChB,oBAAoB;oBACpB,MAAM,IAAI,GAAY,EAAE,CAAC;oBAEzB,qBAAqB;oBACrB,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE;wBACnD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBAChC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE;4BAC1B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;yBAChB;qBACF;oBAED,wCAAwC;oBACxC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;yBACb,MAAM,CACL,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CACjE;yBACA,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAE1C,cAAc;oBACd,gGAAgG;oBAChG,sGAAsG;oBACtG,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;oBAEnC,0CAA0C;oBAC1C,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE;wBACtD,IAAI,CAAC,eAAe,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;qBACrC;oBAED,0BAA0B;oBAC1B,IAAI,KAAe,CAAC;oBAEpB,IAAI;wBACF,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;qBAChC;oBAAC,OAAO,CAAC,EAAE;wBACV,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;wBAChD,SAAS;qBACV;oBAED,iBAAiB;oBACjB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAoC,CAAC,CAAC;;;;;aACrE;;;;;;;;;IACH,CAAC,CAAC;IACF,MAAM,SAAS,GAAG,KAAK,IAAI,EAAE;QAC3B,OAAO,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC,CAAC;IACF,OAAO,KAAK,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;AAChD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@logtail/pino",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.10",
|
|
4
4
|
"description": "Logtail Pino transport by Better Stack",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Better Stack",
|
|
@@ -29,16 +29,15 @@
|
|
|
29
29
|
"access": "public"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
|
-
"@logtail/node": "^0.3.3",
|
|
33
32
|
"npm-run-all": "^4.1.5",
|
|
34
|
-
"typescript": "^
|
|
33
|
+
"typescript": "^4.9.5"
|
|
35
34
|
},
|
|
36
35
|
"peerDependencies": {
|
|
37
36
|
"pino": "^7.0.0 || ^8.0.0"
|
|
38
37
|
},
|
|
39
38
|
"dependencies": {
|
|
40
|
-
"@logtail/node": "^0.4.
|
|
41
|
-
"@logtail/types": "^0.4.
|
|
39
|
+
"@logtail/node": "^0.4.10",
|
|
40
|
+
"@logtail/types": "^0.4.9",
|
|
42
41
|
"pino-abstract-transport": "^1.0.0"
|
|
43
42
|
},
|
|
44
43
|
"scripts": {
|
|
@@ -49,5 +48,5 @@
|
|
|
49
48
|
"test": "echo \"Error: run tests from root\" && exit 1"
|
|
50
49
|
},
|
|
51
50
|
"private": false,
|
|
52
|
-
"gitHead": "
|
|
51
|
+
"gitHead": "90a93feb98341eddc7926e0df857d2a2a86777d5"
|
|
53
52
|
}
|
package/src/index.ts
CHANGED
package/src/pino.ts
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
|
-
import build from
|
|
1
|
+
import build from "pino-abstract-transport";
|
|
2
2
|
|
|
3
3
|
import { Logtail } from "@logtail/node";
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
Context,
|
|
6
|
+
LogLevel,
|
|
7
|
+
ILogtailOptions,
|
|
8
|
+
StackContextHint,
|
|
9
|
+
} from "@logtail/types";
|
|
5
10
|
|
|
6
11
|
import { getLogLevel } from "./helpers";
|
|
7
12
|
|
|
@@ -11,19 +16,31 @@ import { getLogLevel } from "./helpers";
|
|
|
11
16
|
// TODO: stackContextHint =
|
|
12
17
|
|
|
13
18
|
export interface PinoLog {
|
|
14
|
-
level: number
|
|
15
|
-
[key: string]: any
|
|
19
|
+
level: number;
|
|
20
|
+
[key: string]: any;
|
|
16
21
|
}
|
|
17
22
|
|
|
18
23
|
export interface IPinoLogtailOptions {
|
|
19
|
-
sourceToken: string
|
|
20
|
-
options: Partial<ILogtailOptions
|
|
24
|
+
sourceToken: string;
|
|
25
|
+
options: Partial<ILogtailOptions>;
|
|
21
26
|
}
|
|
22
27
|
|
|
23
|
-
const stackContextHint = {
|
|
28
|
+
const stackContextHint = {
|
|
29
|
+
fileName: "node_modules/pino",
|
|
30
|
+
methodNames: [
|
|
31
|
+
"log",
|
|
32
|
+
"fatal",
|
|
33
|
+
"error",
|
|
34
|
+
"warn",
|
|
35
|
+
"info",
|
|
36
|
+
"debug",
|
|
37
|
+
"trace",
|
|
38
|
+
"silent",
|
|
39
|
+
],
|
|
40
|
+
};
|
|
24
41
|
|
|
25
42
|
export async function logtailTransport(options: IPinoLogtailOptions) {
|
|
26
|
-
const logtail = new Logtail(options.sourceToken, options.options)
|
|
43
|
+
const logtail = new Logtail(options.sourceToken, options.options);
|
|
27
44
|
|
|
28
45
|
const buildFunc = async (source: any) => {
|
|
29
46
|
for await (let obj of source) {
|
|
@@ -40,17 +57,19 @@ export async function logtailTransport(options: IPinoLogtailOptions) {
|
|
|
40
57
|
|
|
41
58
|
// Carry over any additional data fields
|
|
42
59
|
Object.keys(obj)
|
|
43
|
-
.filter(
|
|
60
|
+
.filter(
|
|
61
|
+
key => ["time", "msg", "message", "level", "v"].indexOf(key) < 0,
|
|
62
|
+
)
|
|
44
63
|
.forEach(key => (meta[key] = obj[key]));
|
|
45
64
|
|
|
46
65
|
// Get message
|
|
47
66
|
// NOTE: Pino passes messages as obj.msg but if user passes object to Pino it will pass it to us
|
|
48
67
|
// even without 'msg' field. Later we map 'msg' -> 'message' so let's also read 'message' field.
|
|
49
|
-
const msg = obj.msg || obj.message
|
|
68
|
+
const msg = obj.msg || obj.message;
|
|
50
69
|
|
|
51
70
|
// Prevent overriding 'message' with 'msg'
|
|
52
71
|
if (obj.msg !== undefined && obj.message !== undefined) {
|
|
53
|
-
meta[
|
|
72
|
+
meta["message_field"] = obj.message;
|
|
54
73
|
}
|
|
55
74
|
|
|
56
75
|
// Determine the log level
|
|
@@ -59,8 +78,8 @@ export async function logtailTransport(options: IPinoLogtailOptions) {
|
|
|
59
78
|
try {
|
|
60
79
|
level = getLogLevel(obj.level);
|
|
61
80
|
} catch (_) {
|
|
62
|
-
console.error(
|
|
63
|
-
continue
|
|
81
|
+
console.error("Error while mapping log level.");
|
|
82
|
+
continue;
|
|
64
83
|
}
|
|
65
84
|
|
|
66
85
|
// Log to Logtail
|
|
@@ -70,5 +89,5 @@ export async function logtailTransport(options: IPinoLogtailOptions) {
|
|
|
70
89
|
const closeFunc = async () => {
|
|
71
90
|
return await logtail.flush();
|
|
72
91
|
};
|
|
73
|
-
return build(buildFunc, { close: closeFunc })
|
|
92
|
+
return build(buildFunc, { close: closeFunc });
|
|
74
93
|
}
|