@logtail/pino 0.5.0 → 0.5.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cjs/pino.js CHANGED
@@ -17,6 +17,7 @@ const helpers_1 = require("./helpers");
17
17
  const stackContextHint = {
18
18
  fileName: "node_modules/pino",
19
19
  methodNames: ["log", "fatal", "error", "warn", "info", "debug", "trace", "silent"],
20
+ required: true,
20
21
  };
21
22
  async function logtailTransport(options) {
22
23
  const logtail = new node_1.Logtail(options.sourceToken, options.options);
@@ -1 +1 @@
1
- {"version":3,"file":"pino.js","sourceRoot":"","sources":["../../src/pino.ts"],"names":[],"mappings":";;;;;;;;;;;;AA2BA,4CAiDC;AA5ED,sFAA4C;AAE5C,wCAAwC;AAGxC,uCAAwC;AAiBxC,MAAM,gBAAgB,GAAG;IACvB,QAAQ,EAAE,mBAAmB;IAC7B,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;CACnF,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,4EAAE,CAAC;gBAAT,sBAAM;gBAAN,WAAM;gBAAjB,IAAI,GAAG,KAAA,CAAA;gBAChB,oBAAoB;gBACpB,MAAM,IAAI,GAAY,EAAE,CAAC;gBAEzB,qBAAqB;gBACrB,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACpD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAChC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;wBAC3B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;oBACjB,CAAC;gBACH,CAAC;gBAED,wCAAwC;gBACxC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;qBACb,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;qBAC1E,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAE5C,cAAc;gBACd,gGAAgG;gBAChG,sGAAsG;gBACtG,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;gBAEnC,0CAA0C;gBAC1C,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;oBACvD,IAAI,CAAC,eAAe,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;gBACtC,CAAC;gBAED,0BAA0B;gBAC1B,IAAI,KAAe,CAAC;gBAEpB,IAAI,CAAC;oBACH,KAAK,GAAG,IAAA,qBAAW,EAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACjC,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;oBAChD,SAAS;gBACX,CAAC;gBAED,iBAAiB;gBACjB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAoC,CAAC,CAAC;YACtE,CAAC;;;;;;;;;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"}
1
+ {"version":3,"file":"pino.js","sourceRoot":"","sources":["../../src/pino.ts"],"names":[],"mappings":";;;;;;;;;;;;AA4BA,4CAiDC;AA7ED,sFAA4C;AAE5C,wCAAwC;AAGxC,uCAAwC;AAiBxC,MAAM,gBAAgB,GAAG;IACvB,QAAQ,EAAE,mBAAmB;IAC7B,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;IAClF,QAAQ,EAAE,IAAI;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,4EAAE,CAAC;gBAAT,sBAAM;gBAAN,WAAM;gBAAjB,IAAI,GAAG,KAAA,CAAA;gBAChB,oBAAoB;gBACpB,MAAM,IAAI,GAAY,EAAE,CAAC;gBAEzB,qBAAqB;gBACrB,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACpD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAChC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;wBAC3B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;oBACjB,CAAC;gBACH,CAAC;gBAED,wCAAwC;gBACxC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;qBACb,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;qBAC1E,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAE5C,cAAc;gBACd,gGAAgG;gBAChG,sGAAsG;gBACtG,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;gBAEnC,0CAA0C;gBAC1C,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;oBACvD,IAAI,CAAC,eAAe,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;gBACtC,CAAC;gBAED,0BAA0B;gBAC1B,IAAI,KAAe,CAAC;gBAEpB,IAAI,CAAC;oBACH,KAAK,GAAG,IAAA,qBAAW,EAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACjC,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;oBAChD,SAAS;gBACX,CAAC;gBAED,iBAAiB;gBACjB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAoC,CAAC,CAAC;YACtE,CAAC;;;;;;;;;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"}
package/dist/es6/pino.js CHANGED
@@ -11,6 +11,7 @@ import { getLogLevel } from "./helpers";
11
11
  const stackContextHint = {
12
12
  fileName: "node_modules/pino",
13
13
  methodNames: ["log", "fatal", "error", "warn", "info", "debug", "trace", "silent"],
14
+ required: true,
14
15
  };
15
16
  export async function logtailTransport(options) {
16
17
  const logtail = new Logtail(options.sourceToken, options.options);
@@ -1 +1 @@
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;AAGxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAiBxC,MAAM,gBAAgB,GAAG;IACvB,QAAQ,EAAE,mBAAmB;IAC7B,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;CACnF,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,4EAAE,CAAC;gBAAT,sBAAM;gBAAN,WAAM;gBAAjB,IAAI,GAAG,KAAA,CAAA;gBAChB,oBAAoB;gBACpB,MAAM,IAAI,GAAY,EAAE,CAAC;gBAEzB,qBAAqB;gBACrB,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACpD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAChC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;wBAC3B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;oBACjB,CAAC;gBACH,CAAC;gBAED,wCAAwC;gBACxC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;qBACb,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;qBAC1E,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAE5C,cAAc;gBACd,gGAAgG;gBAChG,sGAAsG;gBACtG,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;gBAEnC,0CAA0C;gBAC1C,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;oBACvD,IAAI,CAAC,eAAe,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;gBACtC,CAAC;gBAED,0BAA0B;gBAC1B,IAAI,KAAe,CAAC;gBAEpB,IAAI,CAAC;oBACH,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACjC,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;oBAChD,SAAS;gBACX,CAAC;gBAED,iBAAiB;gBACjB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAoC,CAAC,CAAC;YACtE,CAAC;;;;;;;;;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"}
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;AAGxC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAiBxC,MAAM,gBAAgB,GAAG;IACvB,QAAQ,EAAE,mBAAmB;IAC7B,WAAW,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC;IAClF,QAAQ,EAAE,IAAI;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,4EAAE,CAAC;gBAAT,sBAAM;gBAAN,WAAM;gBAAjB,IAAI,GAAG,KAAA,CAAA;gBAChB,oBAAoB;gBACpB,MAAM,IAAI,GAAY,EAAE,CAAC;gBAEzB,qBAAqB;gBACrB,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;oBACpD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAChC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;wBAC3B,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;oBACjB,CAAC;gBACH,CAAC;gBAED,wCAAwC;gBACxC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;qBACb,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;qBAC1E,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBAE5C,cAAc;gBACd,gGAAgG;gBAChG,sGAAsG;gBACtG,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC;gBAEnC,0CAA0C;gBAC1C,IAAI,GAAG,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;oBACvD,IAAI,CAAC,eAAe,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;gBACtC,CAAC;gBAED,0BAA0B;gBAC1B,IAAI,KAAe,CAAC;gBAEpB,IAAI,CAAC;oBACH,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACjC,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;oBAChD,SAAS;gBACX,CAAC;gBAED,iBAAiB;gBACjB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAoC,CAAC,CAAC;YACtE,CAAC;;;;;;;;;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.5.0",
3
+ "version": "0.5.3",
4
4
  "description": "Better Stack Pino transport (formerly Logtail)",
5
5
  "keywords": [
6
6
  "Better Stack",
@@ -32,8 +32,8 @@
32
32
  "pino": "^7.0.0 || ^8.0.0 || ^9.0.0"
33
33
  },
34
34
  "dependencies": {
35
- "@logtail/node": "^0.5.0",
36
- "@logtail/types": "^0.5.0",
35
+ "@logtail/node": "^0.5.3",
36
+ "@logtail/types": "^0.5.3",
37
37
  "pino-abstract-transport": "^1.0.0"
38
38
  },
39
39
  "scripts": {
@@ -44,5 +44,5 @@
44
44
  "test": "echo \"Error: run tests from root\" && exit 1"
45
45
  },
46
46
  "private": false,
47
- "gitHead": "206d52b85903715541e5acbb5b5f1c63298b0714"
47
+ "gitHead": "4e656e66560fa1a16f82bbb12df7ba6769ed15eb"
48
48
  }
package/src/pino.ts CHANGED
@@ -23,6 +23,7 @@ export interface IPinoLogtailOptions {
23
23
  const stackContextHint = {
24
24
  fileName: "node_modules/pino",
25
25
  methodNames: ["log", "fatal", "error", "warn", "info", "debug", "trace", "silent"],
26
+ required: true,
26
27
  };
27
28
 
28
29
  export async function logtailTransport(options: IPinoLogtailOptions) {
@@ -1 +0,0 @@
1
- export {};
@@ -1,246 +0,0 @@
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 pino_1 = __importDefault(require("pino"));
7
- const types_1 = require("@logtail/types");
8
- const pino_2 = require("./pino");
9
- // TODO: REMOVE
10
- let winston, LogtailTransport;
11
- // Sample log message
12
- const message = "Something to do with something";
13
- /**
14
- * Test a Winston level vs. Logtail level
15
- * @param level - Winston log level
16
- * @param logLevel LogLevel - Logtail log level
17
- * @param levels Use custom log levels
18
- */
19
- async function testLevel(level, logLevel, levels) {
20
- // Sample log
21
- const log = {
22
- level,
23
- message,
24
- };
25
- // Logtail fixtures
26
- // const logtail = new Logtail("test", { throwExceptions: true });
27
- // const logged = new Promise<ILogtailLog[]>(resolve => {
28
- // logtail.setSync(async logs => {
29
- // resolve(logs);
30
- // return logs;
31
- // });
32
- // });
33
- // Create a Pino logger
34
- const syncedLogs = [];
35
- const sync = async (logs) => {
36
- logs.forEach(log => syncedLogs.push(log));
37
- return logs;
38
- };
39
- const transport = (0, pino_2.logtailTransport)({ sourceToken: 'test', options: { batchInterval: 100 }, sync });
40
- const logger = (0, pino_1.default)(transport);
41
- // Log it!
42
- logger.info("Hello world!");
43
- await new Promise(resolve => {
44
- setTimeout(() => resolve(true), 500);
45
- });
46
- // Should be exactly one log
47
- expect(syncedLogs.length).toBe(1);
48
- // Message should match
49
- expect(syncedLogs[0].message).toBe(log.message);
50
- // Log level should be 'logLevel'
51
- expect(syncedLogs[0].level).toBe(logLevel);
52
- }
53
- describe("Winston logging tests", () => {
54
- const levels = {
55
- silly: types_1.LogLevel.Silly,
56
- debug: types_1.LogLevel.Debug,
57
- http: types_1.LogLevel.Http,
58
- verbose: types_1.LogLevel.Verbose,
59
- warn: types_1.LogLevel.Warn,
60
- error: types_1.LogLevel.Error,
61
- };
62
- for (const key in levels) {
63
- it(`should log at the '${key}' level`, async () => {
64
- return testLevel(key, levels[key]);
65
- });
66
- }
67
- //
68
- // it("should sync multiple logs", async () => {
69
- // // Create multiple log entries
70
- // const entries: any[] = [
71
- // {
72
- // level: "info",
73
- // message: `${message} 1`,
74
- // },
75
- // {
76
- // level: "debug",
77
- // message: `${message} 2`,
78
- // },
79
- // {
80
- // level: "warn",
81
- // message: `${message} 3`,
82
- // },
83
- // {
84
- // level: "error",
85
- // message: `${message} 4`,
86
- // },
87
- // ];
88
- //
89
- // // Fixtures
90
- // const logtail = new Logtail("test", {
91
- // throwExceptions: true,
92
- // batchInterval: 1000, // <-- shouldn't be exceeded
93
- // batchSize: entries.length,
94
- // });
95
- //
96
- // logtail.setSync(async logs => {
97
- // expect(logs.length).toBe(entries.length);
98
- //
99
- // // Logs should be identical
100
- // const isIdentical = logs.every(
101
- // log =>
102
- // entries.findIndex(entry => {
103
- // return entry.message == log.message;
104
- // }) > -1,
105
- // );
106
- // expect(isIdentical).toBe(true);
107
- //
108
- // return logs;
109
- // });
110
- //
111
- // // Create a Winston logger
112
- // const logger = winston.createLogger({
113
- // level: "debug", // <-- debug and above
114
- // transports: [new LogtailTransport(logtail)],
115
- // });
116
- //
117
- // entries.forEach(entry => logger.log(entry.level, entry.message));
118
- // });
119
- //
120
- // it("should log metadata with the message and level", async () => {
121
- // const logtail = new Logtail("test", { throwExceptions: true });
122
- // const logged = new Promise<ILogtailLog[]>(resolve => {
123
- // logtail.setSync(async logs => {
124
- // resolve(logs);
125
- // return logs;
126
- // });
127
- // });
128
- //
129
- // // Create a Winston logger
130
- // const logger = winston.createLogger({
131
- // level: LogLevel.Info,
132
- // transports: [new LogtailTransport(logtail)],
133
- // });
134
- //
135
- // // Log it!
136
- // logger.log(LogLevel.Info, "a test message", { request_id: 123 });
137
- //
138
- // const logs = await logged;
139
- //
140
- // // Should be exactly one log
141
- // expect(logs.length).toBe(1);
142
- //
143
- // // Message should match
144
- // expect(logs[0].message).toBe("a test message");
145
- //
146
- // // Log level should be 'info'
147
- // expect(logs[0].level).toBe(LogLevel.Info);
148
- //
149
- // expect(logs[0]["request_id"]).toBe(123);
150
- // });
151
- //
152
- // it("should log defaultMetadata with the message and level", async () => {
153
- // const logtail = new Logtail("test", { throwExceptions: true });
154
- // const logged = new Promise<ILogtailLog[]>(resolve => {
155
- // logtail.setSync(async logs => {
156
- // resolve(logs);
157
- // return logs;
158
- // });
159
- // });
160
- //
161
- // // Create a Winston logger
162
- // const logger = winston.createLogger({
163
- // level: LogLevel.Info,
164
- // transports: [new LogtailTransport(logtail)],
165
- // defaultMeta: {
166
- // component: "server",
167
- // },
168
- // });
169
- //
170
- // // Log it!
171
- // logger.log(LogLevel.Info, "a test message", { request_id: 123 });
172
- //
173
- // const logs = await logged;
174
- //
175
- // // Should be exactly one log
176
- // expect(logs.length).toBe(1);
177
- //
178
- // // Message should match
179
- // expect(logs[0].message).toBe("a test message");
180
- //
181
- // // Log level should be 'info'
182
- // expect(logs[0].level).toBe(LogLevel.Info);
183
- //
184
- // expect(logs[0]["request_id"]).toBe(123);
185
- // expect(logs[0]["component"]).toBe("server");
186
- // });
187
- //
188
- // it("should include correct context fields", async () => {
189
- // const logtail = new Logtail("test", { throwExceptions: true });
190
- // const logged = new Promise<ILogtailLog[]>(resolve => {
191
- // logtail.setSync(async logs => {
192
- // resolve(logs);
193
- // return logs;
194
- // });
195
- // });
196
- //
197
- // // Create a Winston logger
198
- // const logger = winston.createLogger({
199
- // level: LogLevel.Info,
200
- // transports: [new LogtailTransport(logtail)],
201
- // defaultMeta: {
202
- // component: "server",
203
- // },
204
- // });
205
- //
206
- // logger.info("message with context");
207
- //
208
- // const logs = await logged;
209
- //
210
- // const context = logs[0].context;
211
- // expect(context.runtime.file).toMatch("winston.test.ts");
212
- // });
213
- //
214
- // it("should flush logtail when the logger is closed", async () => {
215
- // let logs: ILogtailLog[] = [];
216
- //
217
- // const logtail = new Logtail("test", { throwExceptions: true });
218
- //
219
- // logtail.setSync(async (_logs: ILogtailLog[]) => {
220
- // logs.push(..._logs);
221
- // return logs;
222
- // });
223
- //
224
- // const logger = winston.createLogger({
225
- // level: LogLevel.Info,
226
- // transports: [new LogtailTransport(logtail)],
227
- // });
228
- //
229
- // const finished = new Promise<void>(resolve => {
230
- // logger.on("finish", resolve);
231
- // });
232
- //
233
- // // Act
234
- // logger.info("a test message");
235
- // logger.end();
236
- //
237
- // await finished;
238
- //
239
- // // Should be exactly one log
240
- // expect(logs.length).toBe(1);
241
- //
242
- // // Message should match
243
- // expect(logs[0].message).toBe("a test message");
244
- // });
245
- });
246
- //# sourceMappingURL=pino.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pino.test.js","sourceRoot":"","sources":["../../src/pino.test.ts"],"names":[],"mappings":";;;;;AAAA,gDAA6B;AAE7B,0CAAoE;AAEpE,iCAA6D;AAE7D,eAAe;AACf,IAAI,OAAY,EAAE,gBAAqB,CAAC;AAExC,qBAAqB;AACrB,MAAM,OAAO,GAAG,gCAAgC,CAAC;AAEjD;;;;;GAKG;AACH,KAAK,UAAU,SAAS,CAAC,KAAa,EAAE,QAAkB,EAAE,MAAkC;IAC5F,aAAa;IACb,MAAM,GAAG,GAAQ;QACf,KAAK;QACL,OAAO;KACR,CAAC;IAEF,mBAAmB;IACnB,kEAAkE;IAClE,yDAAyD;IACzD,oCAAoC;IACpC,qBAAqB;IACrB,mBAAmB;IACnB,QAAQ;IACR,MAAM;IAIN,uBAAuB;IACvB,MAAM,UAAU,GAAkB,EAAE,CAAC;IACrC,MAAM,IAAI,GAAS,KAAK,EAAC,IAAI,EAAC,EAAE;QAC9B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;QACzC,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IACF,MAAM,SAAS,GAAG,IAAA,uBAAgB,EAAC,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,EAAE,IAAI,EAAyB,CAAC,CAAC;IAE1H,MAAM,MAAM,GAAG,IAAA,cAAI,EAAC,SAAgB,CAAC,CAAC;IAEtC,UAAU;IACV,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAE5B,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC1B,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,4BAA4B;IAC5B,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAElC,uBAAuB;IACvB,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAEhD,iCAAiC;IACjC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7C,CAAC;AAED,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,MAAM,MAAM,GAAgC;QAC1C,KAAK,EAAE,gBAAQ,CAAC,KAAK;QACrB,KAAK,EAAE,gBAAQ,CAAC,KAAK;QACrB,IAAI,EAAE,gBAAQ,CAAC,IAAI;QACnB,OAAO,EAAE,gBAAQ,CAAC,OAAO;QACzB,IAAI,EAAE,gBAAQ,CAAC,IAAI;QACnB,KAAK,EAAE,gBAAQ,CAAC,KAAK;KACtB,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE;QACxB,EAAE,CAAC,sBAAsB,GAAG,SAAS,EAAE,KAAK,IAAI,EAAE;YAChD,OAAO,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;KACJ;IACD,EAAE;IACF,gDAAgD;IAChD,mCAAmC;IACnC,6BAA6B;IAC7B,QAAQ;IACR,uBAAuB;IACvB,iCAAiC;IACjC,SAAS;IACT,QAAQ;IACR,wBAAwB;IACxB,iCAAiC;IACjC,SAAS;IACT,QAAQ;IACR,uBAAuB;IACvB,iCAAiC;IACjC,SAAS;IACT,QAAQ;IACR,wBAAwB;IACxB,iCAAiC;IACjC,SAAS;IACT,OAAO;IACP,EAAE;IACF,gBAAgB;IAChB,0CAA0C;IAC1C,6BAA6B;IAC7B,wDAAwD;IACxD,iCAAiC;IACjC,QAAQ;IACR,EAAE;IACF,oCAAoC;IACpC,gDAAgD;IAChD,EAAE;IACF,kCAAkC;IAClC,sCAAsC;IACtC,eAAe;IACf,uCAAuC;IACvC,iDAAiD;IACjD,mBAAmB;IACnB,SAAS;IACT,sCAAsC;IACtC,EAAE;IACF,mBAAmB;IACnB,QAAQ;IACR,EAAE;IACF,+BAA+B;IAC/B,0CAA0C;IAC1C,6CAA6C;IAC7C,mDAAmD;IACnD,QAAQ;IACR,EAAE;IACF,sEAAsE;IACtE,MAAM;IACN,EAAE;IACF,qEAAqE;IACrE,oEAAoE;IACpE,2DAA2D;IAC3D,sCAAsC;IACtC,uBAAuB;IACvB,qBAAqB;IACrB,UAAU;IACV,QAAQ;IACR,EAAE;IACF,+BAA+B;IAC/B,0CAA0C;IAC1C,4BAA4B;IAC5B,mDAAmD;IACnD,QAAQ;IACR,EAAE;IACF,eAAe;IACf,sEAAsE;IACtE,EAAE;IACF,+BAA+B;IAC/B,EAAE;IACF,iCAAiC;IACjC,iCAAiC;IACjC,EAAE;IACF,4BAA4B;IAC5B,oDAAoD;IACpD,EAAE;IACF,kCAAkC;IAClC,+CAA+C;IAC/C,EAAE;IACF,6CAA6C;IAC7C,MAAM;IACN,EAAE;IACF,4EAA4E;IAC5E,oEAAoE;IACpE,2DAA2D;IAC3D,sCAAsC;IACtC,uBAAuB;IACvB,qBAAqB;IACrB,UAAU;IACV,QAAQ;IACR,EAAE;IACF,+BAA+B;IAC/B,0CAA0C;IAC1C,4BAA4B;IAC5B,mDAAmD;IACnD,qBAAqB;IACrB,6BAA6B;IAC7B,SAAS;IACT,QAAQ;IACR,EAAE;IACF,eAAe;IACf,sEAAsE;IACtE,EAAE;IACF,+BAA+B;IAC/B,EAAE;IACF,iCAAiC;IACjC,iCAAiC;IACjC,EAAE;IACF,4BAA4B;IAC5B,oDAAoD;IACpD,EAAE;IACF,kCAAkC;IAClC,+CAA+C;IAC/C,EAAE;IACF,6CAA6C;IAC7C,iDAAiD;IACjD,MAAM;IACN,EAAE;IACF,4DAA4D;IAC5D,oEAAoE;IACpE,2DAA2D;IAC3D,sCAAsC;IACtC,uBAAuB;IACvB,qBAAqB;IACrB,UAAU;IACV,QAAQ;IACR,EAAE;IACF,+BAA+B;IAC/B,0CAA0C;IAC1C,4BAA4B;IAC5B,mDAAmD;IACnD,qBAAqB;IACrB,6BAA6B;IAC7B,SAAS;IACT,QAAQ;IACR,EAAE;IACF,yCAAyC;IACzC,EAAE;IACF,+BAA+B;IAC/B,EAAE;IACF,qCAAqC;IACrC,6DAA6D;IAC7D,MAAM;IACN,EAAE;IACF,qEAAqE;IACrE,kCAAkC;IAClC,EAAE;IACF,oEAAoE;IACpE,EAAE;IACF,sDAAsD;IACtD,2BAA2B;IAC3B,mBAAmB;IACnB,QAAQ;IACR,EAAE;IACF,0CAA0C;IAC1C,4BAA4B;IAC5B,mDAAmD;IACnD,QAAQ;IACR,EAAE;IACF,oDAAoD;IACpD,oCAAoC;IACpC,QAAQ;IACR,EAAE;IACF,WAAW;IACX,mCAAmC;IACnC,kBAAkB;IAClB,EAAE;IACF,oBAAoB;IACpB,EAAE;IACF,iCAAiC;IACjC,iCAAiC;IACjC,EAAE;IACF,4BAA4B;IAC5B,oDAAoD;IACpD,MAAM;AACR,CAAC,CAAC,CAAC"}
@@ -1 +0,0 @@
1
- export {};
@@ -1,241 +0,0 @@
1
- import pino from "pino";
2
- import { LogLevel } from "@logtail/types";
3
- import { logtailTransport } from "./pino";
4
- // TODO: REMOVE
5
- let winston, LogtailTransport;
6
- // Sample log message
7
- const message = "Something to do with something";
8
- /**
9
- * Test a Winston level vs. Logtail level
10
- * @param level - Winston log level
11
- * @param logLevel LogLevel - Logtail log level
12
- * @param levels Use custom log levels
13
- */
14
- async function testLevel(level, logLevel, levels) {
15
- // Sample log
16
- const log = {
17
- level,
18
- message,
19
- };
20
- // Logtail fixtures
21
- // const logtail = new Logtail("test", { throwExceptions: true });
22
- // const logged = new Promise<ILogtailLog[]>(resolve => {
23
- // logtail.setSync(async logs => {
24
- // resolve(logs);
25
- // return logs;
26
- // });
27
- // });
28
- // Create a Pino logger
29
- const syncedLogs = [];
30
- const sync = async (logs) => {
31
- logs.forEach(log => syncedLogs.push(log));
32
- return logs;
33
- };
34
- const transport = logtailTransport({ sourceToken: 'test', options: { batchInterval: 100 }, sync });
35
- const logger = pino(transport);
36
- // Log it!
37
- logger.info("Hello world!");
38
- await new Promise(resolve => {
39
- setTimeout(() => resolve(true), 500);
40
- });
41
- // Should be exactly one log
42
- expect(syncedLogs.length).toBe(1);
43
- // Message should match
44
- expect(syncedLogs[0].message).toBe(log.message);
45
- // Log level should be 'logLevel'
46
- expect(syncedLogs[0].level).toBe(logLevel);
47
- }
48
- describe("Winston logging tests", () => {
49
- const levels = {
50
- silly: LogLevel.Silly,
51
- debug: LogLevel.Debug,
52
- http: LogLevel.Http,
53
- verbose: LogLevel.Verbose,
54
- warn: LogLevel.Warn,
55
- error: LogLevel.Error,
56
- };
57
- for (const key in levels) {
58
- it(`should log at the '${key}' level`, async () => {
59
- return testLevel(key, levels[key]);
60
- });
61
- }
62
- //
63
- // it("should sync multiple logs", async () => {
64
- // // Create multiple log entries
65
- // const entries: any[] = [
66
- // {
67
- // level: "info",
68
- // message: `${message} 1`,
69
- // },
70
- // {
71
- // level: "debug",
72
- // message: `${message} 2`,
73
- // },
74
- // {
75
- // level: "warn",
76
- // message: `${message} 3`,
77
- // },
78
- // {
79
- // level: "error",
80
- // message: `${message} 4`,
81
- // },
82
- // ];
83
- //
84
- // // Fixtures
85
- // const logtail = new Logtail("test", {
86
- // throwExceptions: true,
87
- // batchInterval: 1000, // <-- shouldn't be exceeded
88
- // batchSize: entries.length,
89
- // });
90
- //
91
- // logtail.setSync(async logs => {
92
- // expect(logs.length).toBe(entries.length);
93
- //
94
- // // Logs should be identical
95
- // const isIdentical = logs.every(
96
- // log =>
97
- // entries.findIndex(entry => {
98
- // return entry.message == log.message;
99
- // }) > -1,
100
- // );
101
- // expect(isIdentical).toBe(true);
102
- //
103
- // return logs;
104
- // });
105
- //
106
- // // Create a Winston logger
107
- // const logger = winston.createLogger({
108
- // level: "debug", // <-- debug and above
109
- // transports: [new LogtailTransport(logtail)],
110
- // });
111
- //
112
- // entries.forEach(entry => logger.log(entry.level, entry.message));
113
- // });
114
- //
115
- // it("should log metadata with the message and level", async () => {
116
- // const logtail = new Logtail("test", { throwExceptions: true });
117
- // const logged = new Promise<ILogtailLog[]>(resolve => {
118
- // logtail.setSync(async logs => {
119
- // resolve(logs);
120
- // return logs;
121
- // });
122
- // });
123
- //
124
- // // Create a Winston logger
125
- // const logger = winston.createLogger({
126
- // level: LogLevel.Info,
127
- // transports: [new LogtailTransport(logtail)],
128
- // });
129
- //
130
- // // Log it!
131
- // logger.log(LogLevel.Info, "a test message", { request_id: 123 });
132
- //
133
- // const logs = await logged;
134
- //
135
- // // Should be exactly one log
136
- // expect(logs.length).toBe(1);
137
- //
138
- // // Message should match
139
- // expect(logs[0].message).toBe("a test message");
140
- //
141
- // // Log level should be 'info'
142
- // expect(logs[0].level).toBe(LogLevel.Info);
143
- //
144
- // expect(logs[0]["request_id"]).toBe(123);
145
- // });
146
- //
147
- // it("should log defaultMetadata with the message and level", async () => {
148
- // const logtail = new Logtail("test", { throwExceptions: true });
149
- // const logged = new Promise<ILogtailLog[]>(resolve => {
150
- // logtail.setSync(async logs => {
151
- // resolve(logs);
152
- // return logs;
153
- // });
154
- // });
155
- //
156
- // // Create a Winston logger
157
- // const logger = winston.createLogger({
158
- // level: LogLevel.Info,
159
- // transports: [new LogtailTransport(logtail)],
160
- // defaultMeta: {
161
- // component: "server",
162
- // },
163
- // });
164
- //
165
- // // Log it!
166
- // logger.log(LogLevel.Info, "a test message", { request_id: 123 });
167
- //
168
- // const logs = await logged;
169
- //
170
- // // Should be exactly one log
171
- // expect(logs.length).toBe(1);
172
- //
173
- // // Message should match
174
- // expect(logs[0].message).toBe("a test message");
175
- //
176
- // // Log level should be 'info'
177
- // expect(logs[0].level).toBe(LogLevel.Info);
178
- //
179
- // expect(logs[0]["request_id"]).toBe(123);
180
- // expect(logs[0]["component"]).toBe("server");
181
- // });
182
- //
183
- // it("should include correct context fields", async () => {
184
- // const logtail = new Logtail("test", { throwExceptions: true });
185
- // const logged = new Promise<ILogtailLog[]>(resolve => {
186
- // logtail.setSync(async logs => {
187
- // resolve(logs);
188
- // return logs;
189
- // });
190
- // });
191
- //
192
- // // Create a Winston logger
193
- // const logger = winston.createLogger({
194
- // level: LogLevel.Info,
195
- // transports: [new LogtailTransport(logtail)],
196
- // defaultMeta: {
197
- // component: "server",
198
- // },
199
- // });
200
- //
201
- // logger.info("message with context");
202
- //
203
- // const logs = await logged;
204
- //
205
- // const context = logs[0].context;
206
- // expect(context.runtime.file).toMatch("winston.test.ts");
207
- // });
208
- //
209
- // it("should flush logtail when the logger is closed", async () => {
210
- // let logs: ILogtailLog[] = [];
211
- //
212
- // const logtail = new Logtail("test", { throwExceptions: true });
213
- //
214
- // logtail.setSync(async (_logs: ILogtailLog[]) => {
215
- // logs.push(..._logs);
216
- // return logs;
217
- // });
218
- //
219
- // const logger = winston.createLogger({
220
- // level: LogLevel.Info,
221
- // transports: [new LogtailTransport(logtail)],
222
- // });
223
- //
224
- // const finished = new Promise<void>(resolve => {
225
- // logger.on("finish", resolve);
226
- // });
227
- //
228
- // // Act
229
- // logger.info("a test message");
230
- // logger.end();
231
- //
232
- // await finished;
233
- //
234
- // // Should be exactly one log
235
- // expect(logs.length).toBe(1);
236
- //
237
- // // Message should match
238
- // expect(logs[0].message).toBe("a test message");
239
- // });
240
- });
241
- //# sourceMappingURL=pino.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pino.test.js","sourceRoot":"","sources":["../../src/pino.test.ts"],"names":[],"mappings":"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"}