@beforeyoubid/logger-adapter 1.0.12 → 2.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 CHANGED
@@ -1,9 +1,18 @@
1
- # LogDNA Logger Adapter
1
+ # Mezmo (Formerly LogDNA) Logger Adapter
2
2
 
3
- This is a platform logger module that is able to support multiple logging scenarios.
3
+ Notes - LogDNA made a decision not to rename the library to Mezmo just yet. To avoid having two names, we decided to
4
+ keep the variable, class and etc as LogDNA for now.
4
5
 
5
- - A `console` log wrapper so it can send all logs from the native `console` object to LogDNA.
6
- - A Winston log wrapper logger which output better colour and we can send log messages to LogNDA.
6
+ ---
7
+
8
+ This is our BYB logger module that is designed to support multiple two logging scenarios.
9
+
10
+ - Some repos may heavily rely on console.log() or similar to output log on the console. We can utilise this module to
11
+ wrap around the original `console` so all logs can be sent to Mezmo as well. The service need to add
12
+ `consoleLogger.init()` in the handler.
13
+ - A Winston logger - Winston creates a generic logger objec that allows us to perform various operations on the log e.g.
14
+ change the colour of the log line, format message, can customise/add a custom code (using a transport mechanism) to
15
+ send log messages to Mezmo or store in the database if we want.
7
16
 
8
17
  This module is designed to work on a native node runtime and in a Lambda environment. For Lambda, please see the
9
18
  [Flush All Messages](#Flush-All-Messages) section below.
@@ -25,6 +34,24 @@ This module is designed to work on a native node runtime and in a Lambda environ
25
34
  If you are using `console.log` on the existing code base and not ready to switch to Winston logger just yet, this module
26
35
  can also helps you out as well.
27
36
 
37
+ ### Versions
38
+
39
+ - **v1.x.x (first version)**
40
+ - Originally created in 2020 but the `logdna` module is no longer maintained (https://www.npmjs.com/package/logdna).
41
+ We need to move away from it.
42
+ - **v2.x.x**
43
+ - Utilise the latest module actively maintained by Mezmo team (https://www.npmjs.com/package/@logdna/logger)
44
+ - Fix a missing some log line issue occured due to the the fact that `logdna-winston` module creates a separate logdna
45
+ client instance and it doesn't get a chance to fully flush messages before Lambda terminates. We decided to
46
+ customise this module in this project and allow us to utilise a single instance of a LogDNA logger object so that
47
+ `ensureFlushAll()` can flush those messages before we terminate Lambda function. This single LogDNA is shared and
48
+ used by both console log wrapper and LogDNA transport as part of Winston log system.
49
+ - Although it is not a major change, users of this module would like an explicably upgraded version. Just update to
50
+ the most recent v2 version; no API modifications are necessary on the consumer side.
51
+ - Also moved `createLoggerObject()` into this shared module so it's easier to use and prefix message before returning
52
+ the actual logger object. e.g. `createLoggerObject(`[LOG-PREFIX]`);`
53
+ - ![V2 Diagram](./docs/v2-diagram.png)
54
+
28
55
  ## 1) Use Console Logger
29
56
 
30
57
  ```
@@ -55,66 +82,10 @@ by setting `LOGDNA_ENABLED=false` in your env variables.
55
82
  // Don't need to call consoleLogger.flushAll(), logdna object has default flush interval interval at 250ms
56
83
  ```
57
84
 
58
- ### Lambda: Use with an Aync Handler
59
-
60
- ```
61
- import { consoleLogger, flushAll } from '@beforeyoubid/logger-adapter';
62
- consoleLogger.init();
63
-
64
- // Ensure the we flush all messages before Lambda function gets terminated
65
- const yourLambdaHandler = async (event, context) => {
66
- try {
67
- console.debug('Sample debug log - this message only show up when LOG_LEVEL is set to "debug"')
68
-
69
- const result = await yourNormalProcess();
70
-
71
- await flushAll(); // Trigger to flush all messages
72
-
73
- return result;
74
- } catch (e) {
75
- // handle error
76
- await flushAll(); // Trigger to flush all messages
77
-
78
- // Throw or send result as usual
79
- throw e;
80
-
81
- // Or handle it nicely
82
- // return unsuccessfulResponse;
83
- }
84
- }
85
-
86
- ```
87
-
88
- ### Lambda: Use with a Callback Handler
89
-
90
- ```
91
- import { consoleLogger, flushAll } from '@beforeyoubid/logger-adapter';
92
- consoleLogger.init();
93
-
94
- const yourLambdaHandler = (event, context, callback) => {
95
- try {
96
- console.debug('Sample debug log - this message only show up when LOG_LEVEL is set to "debug"')
97
-
98
- const result = yourNormalProcess();
99
-
100
- callback(null, yourNormalResponseObject);
101
-
102
- flushAll(); // Trigger to flush all messages
103
- } catch (e) {
104
-
105
- // Ensure the we flush all messages before Lambda function gets terminated
106
- flushAll(); // Trigger to flush all messages
107
-
108
- // Call a callback with error
109
- callback(yourErrorObject);
110
-
111
- // Or return unsuccessful response
112
- // https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html#api-gateway-simple-proxy-for-lambda-output-format
113
- // callback(null, unsuccessfulResponse);
114
- }
115
- }
85
+ ## Flush All Messages
116
86
 
117
- ```
87
+ LogDNA puts messages in the buffer and push out every 250ms. If Lambda is terminated before some of these intervals,
88
+ it's likely that some of message logs are not sent to LogDNA. Use `ensureFlushAll()` to flush messages automatically.
118
89
 
119
90
  ### Lambda: Use a handler wrapper for Serverless Express
120
91
 
@@ -122,26 +93,17 @@ by setting `LOGDNA_ENABLED=false` in your env variables.
122
93
  import { consoleLogger, ensureFlushAll } from '@beforeyoubid/logger-adapter';
123
94
  consoleLogger.init();
124
95
 
125
- export default ensureFlushAll(graphqlHandler);
96
+ export default ensureFlushAll(yourLambdaHandler);
126
97
 
127
98
  ```
128
99
 
129
- ### Lambda: Use with a Callback Handler (Apollo GraphQL Handler)
100
+ ### Lambda: Use with a Callback Handler
130
101
 
131
102
  ```
132
103
  import { consoleLogger, ensureFlushAllCallback } from '@beforeyoubid/logger-adapter';
133
104
  consoleLogger.init();
134
105
 
135
- // Existing graphql hander - it uses callback signature
136
- const graphqlHandler = server.createHandler({
137
- cors: {
138
- origin: '*',
139
- allowedHeaders: ['x-api-token', 'Authorization'],
140
- methods: ['GET', 'POST'],
141
- },
142
- });
143
-
144
- export default ensureFlushAllCallback(graphqlHandler);
106
+ export default ensureFlushAllCallback(yourLambdaHandlerCallback);
145
107
 
146
108
  ```
147
109
 
@@ -172,76 +134,42 @@ of the environment variable.
172
134
  logger.info('This message only show up when LOG_LEVEL is set to "info"')
173
135
  ```
174
136
 
175
- ### Lambda: Use with an Aync Handler
137
+ ### Lambda: Use a handler wrapper for Serverless Express
176
138
 
177
139
  ```
178
- import { logger, flushAll } from '@beforeyoubid/logger-adapter';
140
+ import { logger, ensureFlushAll } from '@beforeyoubid/logger-adapter';
179
141
 
180
- const yourLambdaHandler = async (event, context) => {
181
- try {
182
- logger.debug('Sample debug log - this message only show up when LOG_LEVEL is set to "debug"')
142
+ // you can use logger.debug('log text in a string format');
183
143
 
184
- const result = await yourNormalProcess();
185
-
186
- // Ensure the we flush all messages before Lambda function gets terminated
187
- await flushAll();
188
-
189
- return result;
190
- } catch (e) {
191
- // Ensure the we flush all messages before Lambda function gets terminated
192
- await flushAll(); // Trigger to flush all messages
193
-
194
- // Throw or send result as usual
195
- throw e;
196
-
197
- // Or handle it nicely
198
- // return unsuccessfulResponse;
199
- }
200
- }
144
+ export default ensureFlushAll(yourLambdaHandler);
201
145
 
202
146
  ```
203
147
 
204
148
  ### Lambda: Use with a Callback Handler
205
149
 
206
150
  ```
207
- import { logger, flushAll } from '@beforeyoubid/logger-adapter';
151
+ import { logger, ensureFlushAllCallback } from '@beforeyoubid/logger-adapter';
208
152
 
209
- const yourLambdaHandler = (event, context, callback) => {
210
- try {
211
- logger.debug('Sample debug log - this message only show up when LOG_LEVEL is set to "debug"')
153
+ // you can use logger.debug('log text in a string format');
212
154
 
213
- const result = yourNormalProcess();
155
+ export default ensureFlushAllCallback(yourLambdaHandlerCallback);
214
156
 
215
- callback(null, yourNormalResponseObject);
216
157
 
217
- // Ensure the we flush all messages before Lambda function gets terminated
218
- flushAll(); // Trigger to flush all messages
219
- } catch (e) {
220
- // Ensure the we flush all messages before Lambda function gets terminated
221
- flushAll(); // Trigger to flush all messages
158
+ ```
222
159
 
223
- // Call a callback with error
224
- callback(yourErrorObject);
160
+ ### Prefixing your log message
225
161
 
226
- // Or return unsuccessful response
227
- // https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html#api-gateway-simple-proxy-for-lambda-output-format
228
- // callback(null, unsuccessfulResponse);
229
- }
230
- }
162
+ In some cases, you may want to have a clearer log message by prefixing them with a predefined string e.g. name of your
163
+ module so they look like this. ![Log prefix](./docs/log-prefix.png)
231
164
 
232
165
  ```
166
+ import { getLoggerObject } from '@beforeyoubid/logger-adapter';
233
167
 
234
- ## Flush All Messages
235
-
236
- LogDNA puts messages in the buffer and push out every 250ms. If Lambda is terminated before some of these intervals,
237
- it's likely that some of message logs are not sent to LogDNA.
168
+ const logger = getLoggerObject('[CoreLogicListingProvider]');
238
169
 
239
- We just need to ensure that after we've completed the business logic and before the Lambda function is terminated, we
240
- flush all messages. We can just call a LogDNA `flushAll()` function and this module export this logic for us to use.
241
- Depending on how your Lambda handler is set up, but there are three variances we have observed.
242
-
243
- 1. Async handler
244
- 2. Async handler but use Serverless Express framework
245
- 3. Apollo non-async handler which is created by a `createHandler()` function
170
+ logger.info('the usual log string...')
171
+ ```
246
172
 
247
- Please see usage examples from the above sections
173
+ **Notes that** this function just wraps the original Winston logger instance your normally access from this line.
174
+ `import { logger } from '@beforeyoubid/logger-adapter';`. It only wraps and add the prefix the log line for you and
175
+ returns with debug, info, warn, error functions.
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ var _params = require("../params");
6
+ describe("Log Params", function() {
7
+ it("return correct sendToRemote status", function() {
8
+ var status;
9
+ // LOGDNA_ENABLED is from env which is string
10
+ status = (0, _params.sendToRemote)("", "true");
11
+ expect(status).toEqual(false);
12
+ status = (0, _params.sendToRemote)("something", "true");
13
+ expect(status).toEqual(true);
14
+ status = (0, _params.sendToRemote)("something", "false");
15
+ expect(status).toEqual(false);
16
+ });
17
+ it("is able to set default logdna setting", function() {
18
+ var simulatedEnv = {
19
+ STAGE: "sample",
20
+ LOGDNA_KEY: "",
21
+ LOGDNA_SUPPRESS_FLUSH_ALL: "true"
22
+ };
23
+ var params = (0, _params.getLogParams)(simulatedEnv);
24
+ expect(params.logLevel).toEqual("info");
25
+ expect(params.logDNASuppressFlushAll).toEqual(true);
26
+ expect(params.functionName).toEqual("n/a");
27
+ expect(params.logDNAOptions.env).toEqual("sample");
28
+ });
29
+ describe("sendToRemote", function() {
30
+ it("should set sendToRemote to false when logdna_key is empty", function() {
31
+ var simulatedEnv = {
32
+ LOGDNA_KEY: ""
33
+ };
34
+ var params = (0, _params.getLogParams)(simulatedEnv);
35
+ expect(params.sendToRemote).toEqual(false);
36
+ });
37
+ it("should set sendToRemote to true when logdna_key presents & logdna is enabled", function() {
38
+ var simulatedEnv = {
39
+ LOGDNA_KEY: "some-random-key",
40
+ LOGDNA_ENABLED: "true"
41
+ };
42
+ var params = (0, _params.getLogParams)(simulatedEnv);
43
+ expect(params.sendToRemote).toEqual(true);
44
+ });
45
+ });
46
+ describe("sendToRemote", function() {
47
+ it("should set sendToRemote to false when logdna_key is not set", function() {
48
+ var simulatedEnv = {};
49
+ var params = (0, _params.getLogParams)(simulatedEnv);
50
+ expect(params.sendToRemote).toEqual(false);
51
+ });
52
+ it("should set sendToRemote to false when logdna_key is empty", function() {
53
+ var simulatedEnv = {
54
+ LOGDNA_KEY: ""
55
+ };
56
+ var params = (0, _params.getLogParams)(simulatedEnv);
57
+ expect(params.sendToRemote).toEqual(false);
58
+ });
59
+ it("should set sendToRemote to true when logdna_key presents & logdna is enabled", function() {
60
+ var simulatedEnv = {
61
+ LOGDNA_KEY: "some-random-key",
62
+ LOGDNA_ENABLED: "true"
63
+ };
64
+ var params = (0, _params.getLogParams)(simulatedEnv);
65
+ expect(params.sendToRemote).toEqual(true);
66
+ });
67
+ });
68
+ describe("Validate logDNASuppressFlushAll", function() {
69
+ it("should set logDNASuppressFlushAll to false by default", function() {
70
+ var simulatedEnv = {};
71
+ var params = (0, _params.getLogParams)(simulatedEnv);
72
+ expect(params.logDNASuppressFlushAll).toEqual(false);
73
+ });
74
+ it("should set logDNASuppressFlushAll to true when we supply env variable", function() {
75
+ var simulatedEnv = {
76
+ LOGDNA_SUPPRESS_FLUSH_ALL: "true"
77
+ };
78
+ var params = (0, _params.getLogParams)(simulatedEnv);
79
+ expect(params.logDNASuppressFlushAll).toEqual(true);
80
+ });
81
+ });
82
+ });
83
+
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vcGFyYW1zLnNwZWMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZ2V0TG9nUGFyYW1zLCBzZW5kVG9SZW1vdGUgfSBmcm9tICcuLi9wYXJhbXMnO1xuXG5kZXNjcmliZSgnTG9nIFBhcmFtcycsICgpID0+IHtcbiAgaXQoJ3JldHVybiBjb3JyZWN0IHNlbmRUb1JlbW90ZSBzdGF0dXMnLCAoKSA9PiB7XG4gICAgbGV0IHN0YXR1cztcbiAgICAvLyBMT0dETkFfRU5BQkxFRCBpcyBmcm9tIGVudiB3aGljaCBpcyBzdHJpbmdcbiAgICBzdGF0dXMgPSBzZW5kVG9SZW1vdGUoJycsICd0cnVlJyk7XG4gICAgZXhwZWN0KHN0YXR1cykudG9FcXVhbChmYWxzZSk7XG5cbiAgICBzdGF0dXMgPSBzZW5kVG9SZW1vdGUoJ3NvbWV0aGluZycsICd0cnVlJyk7XG4gICAgZXhwZWN0KHN0YXR1cykudG9FcXVhbCh0cnVlKTtcblxuICAgIHN0YXR1cyA9IHNlbmRUb1JlbW90ZSgnc29tZXRoaW5nJywgJ2ZhbHNlJyk7XG4gICAgZXhwZWN0KHN0YXR1cykudG9FcXVhbChmYWxzZSk7XG4gIH0pO1xuXG4gIGl0KCdpcyBhYmxlIHRvIHNldCBkZWZhdWx0IGxvZ2RuYSBzZXR0aW5nJywgKCkgPT4ge1xuICAgIGNvbnN0IHNpbXVsYXRlZEVudiA9IHtcbiAgICAgIFNUQUdFOiAnc2FtcGxlJyxcbiAgICAgIExPR0ROQV9LRVk6ICcnLFxuICAgICAgTE9HRE5BX1NVUFBSRVNTX0ZMVVNIX0FMTDogJ3RydWUnLFxuICAgIH07XG4gICAgY29uc3QgcGFyYW1zID0gZ2V0TG9nUGFyYW1zKHNpbXVsYXRlZEVudik7XG4gICAgZXhwZWN0KHBhcmFtcy5sb2dMZXZlbCkudG9FcXVhbCgnaW5mbycpO1xuICAgIGV4cGVjdChwYXJhbXMubG9nRE5BU3VwcHJlc3NGbHVzaEFsbCkudG9FcXVhbCh0cnVlKTtcbiAgICBleHBlY3QocGFyYW1zLmZ1bmN0aW9uTmFtZSkudG9FcXVhbCgnbi9hJyk7XG4gICAgZXhwZWN0KHBhcmFtcy5sb2dETkFPcHRpb25zLmVudikudG9FcXVhbCgnc2FtcGxlJyk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzZW5kVG9SZW1vdGUnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBzZXQgc2VuZFRvUmVtb3RlIHRvIGZhbHNlIHdoZW4gbG9nZG5hX2tleSBpcyBlbXB0eScsICgpID0+IHtcbiAgICAgIGNvbnN0IHNpbXVsYXRlZEVudiA9IHtcbiAgICAgICAgTE9HRE5BX0tFWTogJycsXG4gICAgICB9O1xuICAgICAgY29uc3QgcGFyYW1zID0gZ2V0TG9nUGFyYW1zKHNpbXVsYXRlZEVudik7XG4gICAgICBleHBlY3QocGFyYW1zLnNlbmRUb1JlbW90ZSkudG9FcXVhbChmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHNldCBzZW5kVG9SZW1vdGUgdG8gdHJ1ZSB3aGVuIGxvZ2RuYV9rZXkgcHJlc2VudHMgJiBsb2dkbmEgaXMgZW5hYmxlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHNpbXVsYXRlZEVudiA9IHtcbiAgICAgICAgTE9HRE5BX0tFWTogJ3NvbWUtcmFuZG9tLWtleScsXG4gICAgICAgIExPR0ROQV9FTkFCTEVEOiAndHJ1ZScsXG4gICAgICB9O1xuICAgICAgY29uc3QgcGFyYW1zID0gZ2V0TG9nUGFyYW1zKHNpbXVsYXRlZEVudik7XG4gICAgICBleHBlY3QocGFyYW1zLnNlbmRUb1JlbW90ZSkudG9FcXVhbCh0cnVlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3NlbmRUb1JlbW90ZScsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIHNldCBzZW5kVG9SZW1vdGUgdG8gZmFsc2Ugd2hlbiBsb2dkbmFfa2V5IGlzIG5vdCBzZXQnLCAoKSA9PiB7XG4gICAgICBjb25zdCBzaW11bGF0ZWRFbnYgPSB7fTtcbiAgICAgIGNvbnN0IHBhcmFtcyA9IGdldExvZ1BhcmFtcyhzaW11bGF0ZWRFbnYpO1xuICAgICAgZXhwZWN0KHBhcmFtcy5zZW5kVG9SZW1vdGUpLnRvRXF1YWwoZmFsc2UpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzZXQgc2VuZFRvUmVtb3RlIHRvIGZhbHNlIHdoZW4gbG9nZG5hX2tleSBpcyBlbXB0eScsICgpID0+IHtcbiAgICAgIGNvbnN0IHNpbXVsYXRlZEVudiA9IHtcbiAgICAgICAgTE9HRE5BX0tFWTogJycsXG4gICAgICB9O1xuICAgICAgY29uc3QgcGFyYW1zID0gZ2V0TG9nUGFyYW1zKHNpbXVsYXRlZEVudik7XG4gICAgICBleHBlY3QocGFyYW1zLnNlbmRUb1JlbW90ZSkudG9FcXVhbChmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHNldCBzZW5kVG9SZW1vdGUgdG8gdHJ1ZSB3aGVuIGxvZ2RuYV9rZXkgcHJlc2VudHMgJiBsb2dkbmEgaXMgZW5hYmxlZCcsICgpID0+IHtcbiAgICAgIGNvbnN0IHNpbXVsYXRlZEVudiA9IHtcbiAgICAgICAgTE9HRE5BX0tFWTogJ3NvbWUtcmFuZG9tLWtleScsXG4gICAgICAgIExPR0ROQV9FTkFCTEVEOiAndHJ1ZScsXG4gICAgICB9O1xuICAgICAgY29uc3QgcGFyYW1zID0gZ2V0TG9nUGFyYW1zKHNpbXVsYXRlZEVudik7XG4gICAgICBleHBlY3QocGFyYW1zLnNlbmRUb1JlbW90ZSkudG9FcXVhbCh0cnVlKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ1ZhbGlkYXRlIGxvZ0ROQVN1cHByZXNzRmx1c2hBbGwnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBzZXQgbG9nRE5BU3VwcHJlc3NGbHVzaEFsbCB0byBmYWxzZSBieSBkZWZhdWx0JywgKCkgPT4ge1xuICAgICAgY29uc3Qgc2ltdWxhdGVkRW52ID0ge307XG4gICAgICBjb25zdCBwYXJhbXMgPSBnZXRMb2dQYXJhbXMoc2ltdWxhdGVkRW52KTtcbiAgICAgIGV4cGVjdChwYXJhbXMubG9nRE5BU3VwcHJlc3NGbHVzaEFsbCkudG9FcXVhbChmYWxzZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHNldCBsb2dETkFTdXBwcmVzc0ZsdXNoQWxsIHRvIHRydWUgd2hlbiB3ZSBzdXBwbHkgZW52IHZhcmlhYmxlJywgKCkgPT4ge1xuICAgICAgY29uc3Qgc2ltdWxhdGVkRW52ID0ge1xuICAgICAgICBMT0dETkFfU1VQUFJFU1NfRkxVU0hfQUxMOiAndHJ1ZScsXG4gICAgICB9O1xuICAgICAgY29uc3QgcGFyYW1zID0gZ2V0TG9nUGFyYW1zKHNpbXVsYXRlZEVudik7XG4gICAgICBleHBlY3QocGFyYW1zLmxvZ0ROQVN1cHByZXNzRmx1c2hBbGwpLnRvRXF1YWwodHJ1ZSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibmFtZXMiOlsiZGVzY3JpYmUiLCJpdCIsInN0YXR1cyIsInNlbmRUb1JlbW90ZSIsImV4cGVjdCIsInRvRXF1YWwiLCJzaW11bGF0ZWRFbnYiLCJTVEFHRSIsIkxPR0ROQV9LRVkiLCJMT0dETkFfU1VQUFJFU1NfRkxVU0hfQUxMIiwicGFyYW1zIiwiZ2V0TG9nUGFyYW1zIiwibG9nTGV2ZWwiLCJsb2dETkFTdXBwcmVzc0ZsdXNoQWxsIiwiZnVuY3Rpb25OYW1lIiwibG9nRE5BT3B0aW9ucyIsImVudiIsIkxPR0ROQV9FTkFCTEVEIl0sIm1hcHBpbmdzIjoiOzs7O3NCQUEyQztBQUUzQ0EsU0FBUyxjQUFjLFdBQU07SUFDM0JDLEdBQUcsc0NBQXNDLFdBQU07UUFDN0MsSUFBSUM7UUFDSiw2Q0FBNkM7UUFDN0NBLFNBQVNDLElBQUFBLG9CQUFZLEVBQUMsSUFBSTtRQUMxQkMsT0FBT0YsUUFBUUcsT0FBTyxDQUFDLEtBQUs7UUFFNUJILFNBQVNDLElBQUFBLG9CQUFZLEVBQUMsYUFBYTtRQUNuQ0MsT0FBT0YsUUFBUUcsT0FBTyxDQUFDLElBQUk7UUFFM0JILFNBQVNDLElBQUFBLG9CQUFZLEVBQUMsYUFBYTtRQUNuQ0MsT0FBT0YsUUFBUUcsT0FBTyxDQUFDLEtBQUs7SUFDOUI7SUFFQUosR0FBRyx5Q0FBeUMsV0FBTTtRQUNoRCxJQUFNSyxlQUFlO1lBQ25CQyxPQUFPO1lBQ1BDLFlBQVk7WUFDWkMsMkJBQTJCO1FBQzdCO1FBQ0EsSUFBTUMsU0FBU0MsSUFBQUEsb0JBQVksRUFBQ0w7UUFDNUJGLE9BQU9NLE9BQU9FLFFBQVEsRUFBRVAsT0FBTyxDQUFDO1FBQ2hDRCxPQUFPTSxPQUFPRyxzQkFBc0IsRUFBRVIsT0FBTyxDQUFDLElBQUk7UUFDbERELE9BQU9NLE9BQU9JLFlBQVksRUFBRVQsT0FBTyxDQUFDO1FBQ3BDRCxPQUFPTSxPQUFPSyxhQUFhLENBQUNDLEdBQUcsRUFBRVgsT0FBTyxDQUFDO0lBQzNDO0lBRUFMLFNBQVMsZ0JBQWdCLFdBQU07UUFDN0JDLEdBQUcsNkRBQTZELFdBQU07WUFDcEUsSUFBTUssZUFBZTtnQkFDbkJFLFlBQVk7WUFDZDtZQUNBLElBQU1FLFNBQVNDLElBQUFBLG9CQUFZLEVBQUNMO1lBQzVCRixPQUFPTSxPQUFPUCxZQUFZLEVBQUVFLE9BQU8sQ0FBQyxLQUFLO1FBQzNDO1FBRUFKLEdBQUcsZ0ZBQWdGLFdBQU07WUFDdkYsSUFBTUssZUFBZTtnQkFDbkJFLFlBQVk7Z0JBQ1pTLGdCQUFnQjtZQUNsQjtZQUNBLElBQU1QLFNBQVNDLElBQUFBLG9CQUFZLEVBQUNMO1lBQzVCRixPQUFPTSxPQUFPUCxZQUFZLEVBQUVFLE9BQU8sQ0FBQyxJQUFJO1FBQzFDO0lBQ0Y7SUFFQUwsU0FBUyxnQkFBZ0IsV0FBTTtRQUM3QkMsR0FBRywrREFBK0QsV0FBTTtZQUN0RSxJQUFNSyxlQUFlLENBQUM7WUFDdEIsSUFBTUksU0FBU0MsSUFBQUEsb0JBQVksRUFBQ0w7WUFDNUJGLE9BQU9NLE9BQU9QLFlBQVksRUFBRUUsT0FBTyxDQUFDLEtBQUs7UUFDM0M7UUFFQUosR0FBRyw2REFBNkQsV0FBTTtZQUNwRSxJQUFNSyxlQUFlO2dCQUNuQkUsWUFBWTtZQUNkO1lBQ0EsSUFBTUUsU0FBU0MsSUFBQUEsb0JBQVksRUFBQ0w7WUFDNUJGLE9BQU9NLE9BQU9QLFlBQVksRUFBRUUsT0FBTyxDQUFDLEtBQUs7UUFDM0M7UUFFQUosR0FBRyxnRkFBZ0YsV0FBTTtZQUN2RixJQUFNSyxlQUFlO2dCQUNuQkUsWUFBWTtnQkFDWlMsZ0JBQWdCO1lBQ2xCO1lBQ0EsSUFBTVAsU0FBU0MsSUFBQUEsb0JBQVksRUFBQ0w7WUFDNUJGLE9BQU9NLE9BQU9QLFlBQVksRUFBRUUsT0FBTyxDQUFDLElBQUk7UUFDMUM7SUFDRjtJQUVBTCxTQUFTLG1DQUFtQyxXQUFNO1FBQ2hEQyxHQUFHLHlEQUF5RCxXQUFNO1lBQ2hFLElBQU1LLGVBQWUsQ0FBQztZQUN0QixJQUFNSSxTQUFTQyxJQUFBQSxvQkFBWSxFQUFDTDtZQUM1QkYsT0FBT00sT0FBT0csc0JBQXNCLEVBQUVSLE9BQU8sQ0FBQyxLQUFLO1FBQ3JEO1FBRUFKLEdBQUcseUVBQXlFLFdBQU07WUFDaEYsSUFBTUssZUFBZTtnQkFDbkJHLDJCQUEyQjtZQUM3QjtZQUNBLElBQU1DLFNBQVNDLElBQUFBLG9CQUFZLEVBQUNMO1lBQzVCRixPQUFPTSxPQUFPRyxzQkFBc0IsRUFBRVIsT0FBTyxDQUFDLElBQUk7UUFDcEQ7SUFDRjtBQUNGIn0=
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ var _index = require("../index");
6
+ var _typeof = function(obj) {
7
+ "@swc/helpers - typeof";
8
+ return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
9
+ };
10
+ describe("Console Logger", function() {
11
+ it("should be able to load module", function() {
12
+ var objType = typeof _index.consoleLogger === "undefined" ? "undefined" : _typeof(_index.consoleLogger);
13
+ expect(objType).toEqual("object");
14
+ expect(_typeof(_index.consoleLogger.init)).toEqual("function");
15
+ });
16
+ });
17
+
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb25zb2xlL19fdGVzdHNfXy9jb25zb2xlTG9nZ2VyLnNwZWMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29uc29sZUxvZ2dlciB9IGZyb20gJy4uL2luZGV4JztcblxuZGVzY3JpYmUoJ0NvbnNvbGUgTG9nZ2VyJywgKCkgPT4ge1xuICBpdCgnc2hvdWxkIGJlIGFibGUgdG8gbG9hZCBtb2R1bGUnLCAoKSA9PiB7XG4gICAgY29uc3Qgb2JqVHlwZSA9IHR5cGVvZiBjb25zb2xlTG9nZ2VyO1xuICAgIGV4cGVjdChvYmpUeXBlKS50b0VxdWFsKCdvYmplY3QnKTtcbiAgICBleHBlY3QodHlwZW9mIGNvbnNvbGVMb2dnZXIuaW5pdCkudG9FcXVhbCgnZnVuY3Rpb24nKTtcbiAgfSk7XG59KTtcbiJdLCJuYW1lcyI6WyJkZXNjcmliZSIsIml0Iiwib2JqVHlwZSIsImNvbnNvbGVMb2dnZXIiLCJleHBlY3QiLCJ0b0VxdWFsIiwiaW5pdCJdLCJtYXBwaW5ncyI6Ijs7OztxQkFBOEI7Ozs7O0FBRTlCQSxTQUFTLGtCQUFrQixXQUFNO0lBQy9CQyxHQUFHLGlDQUFpQyxXQUFNO1FBQ3hDLElBQU1DLFVBQVUsT0FBT0Msb0JBQWEsaUNBQXBCLFFBQU9BLG9CQUFhLENBQUE7UUFDcENDLE9BQU9GLFNBQVNHLE9BQU8sQ0FBQztRQUN4QkQsT0FBTyxRQUFPRCxvQkFBYSxDQUFDRyxJQUFJLEdBQUVELE9BQU8sQ0FBQztJQUM1QztBQUNGIn0=
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ var _index = require("../index");
6
+ var _logWrapper = /*#__PURE__*/ _interopRequireWildcard(require("../logWrapper"));
7
+ function _getRequireWildcardCache(nodeInterop) {
8
+ if (typeof WeakMap !== "function") return null;
9
+ var cacheBabelInterop = new WeakMap();
10
+ var cacheNodeInterop = new WeakMap();
11
+ return (_getRequireWildcardCache = function(nodeInterop) {
12
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
13
+ })(nodeInterop);
14
+ }
15
+ function _interopRequireWildcard(obj, nodeInterop) {
16
+ if (!nodeInterop && obj && obj.__esModule) {
17
+ return obj;
18
+ }
19
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
20
+ return {
21
+ default: obj
22
+ };
23
+ }
24
+ var cache = _getRequireWildcardCache(nodeInterop);
25
+ if (cache && cache.has(obj)) {
26
+ return cache.get(obj);
27
+ }
28
+ var newObj = {};
29
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
30
+ for(var key in obj){
31
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
32
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
33
+ if (desc && (desc.get || desc.set)) {
34
+ Object.defineProperty(newObj, key, desc);
35
+ } else {
36
+ newObj[key] = obj[key];
37
+ }
38
+ }
39
+ }
40
+ newObj.default = obj;
41
+ if (cache) {
42
+ cache.set(obj, newObj);
43
+ }
44
+ return newObj;
45
+ }
46
+ jest.mock("../logWrapper.ts");
47
+ jest.mock("../../logger/logdnaClient.ts");
48
+ jest.mock("../../util", function() {
49
+ return {
50
+ isLogDNAEnabled: function() {
51
+ return true;
52
+ }
53
+ };
54
+ });
55
+ describe("consoleLogger.init()", function() {
56
+ beforeEach(function() {
57
+ jest.resetAllMocks();
58
+ });
59
+ it("should not wrap the console logger if we do not call init", function() {
60
+ var spy = jest.spyOn(_logWrapper, "wrapAndSendToLogDNA");
61
+ expect(spy).not.toHaveBeenCalled();
62
+ });
63
+ it("should wrap console log if we enable it", function() {
64
+ var spy = jest.spyOn(_logWrapper, "wrapAndSendToLogDNA");
65
+ _index.consoleLogger.init();
66
+ expect(spy).toHaveBeenCalled();
67
+ });
68
+ });
69
+
70
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb25zb2xlL19fdGVzdHNfXy9pbmRleC5zcGVjLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImplc3QubW9jaygnLi4vbG9nV3JhcHBlci50cycpO1xuamVzdC5tb2NrKCcuLi8uLi9sb2dnZXIvbG9nZG5hQ2xpZW50LnRzJyk7XG5pbXBvcnQgeyBjb25zb2xlTG9nZ2VyIH0gZnJvbSAnLi4vaW5kZXgnO1xuaW1wb3J0ICogYXMgbG9nV3JhcHBlciBmcm9tICcuLi9sb2dXcmFwcGVyJztcbmplc3QubW9jaygnLi4vLi4vdXRpbCcsICgpID0+ICh7XG4gIGlzTG9nRE5BRW5hYmxlZDogKCkgPT4gdHJ1ZSxcbn0pKTtcblxuZGVzY3JpYmUoJ2NvbnNvbGVMb2dnZXIuaW5pdCgpJywgKCkgPT4ge1xuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICBqZXN0LnJlc2V0QWxsTW9ja3MoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCBub3Qgd3JhcCB0aGUgY29uc29sZSBsb2dnZXIgaWYgd2UgZG8gbm90IGNhbGwgaW5pdCcsICgpID0+IHtcbiAgICBjb25zdCBzcHkgPSBqZXN0LnNweU9uKGxvZ1dyYXBwZXIsICd3cmFwQW5kU2VuZFRvTG9nRE5BJyk7XG4gICAgZXhwZWN0KHNweSkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB3cmFwIGNvbnNvbGUgbG9nIGlmIHdlIGVuYWJsZSBpdCcsICgpID0+IHtcbiAgICBjb25zdCBzcHkgPSBqZXN0LnNweU9uKGxvZ1dyYXBwZXIsICd3cmFwQW5kU2VuZFRvTG9nRE5BJyk7XG4gICAgY29uc29sZUxvZ2dlci5pbml0KCk7XG4gICAgZXhwZWN0KHNweSkudG9IYXZlQmVlbkNhbGxlZCgpO1xuICB9KTtcbn0pO1xuIl0sIm5hbWVzIjpbImplc3QiLCJtb2NrIiwiaXNMb2dETkFFbmFibGVkIiwiZGVzY3JpYmUiLCJiZWZvcmVFYWNoIiwicmVzZXRBbGxNb2NrcyIsIml0Iiwic3B5Iiwic3B5T24iLCJsb2dXcmFwcGVyIiwiZXhwZWN0Iiwibm90IiwidG9IYXZlQmVlbkNhbGxlZCIsImNvbnNvbGVMb2dnZXIiLCJpbml0Il0sIm1hcHBpbmdzIjoiOzs7O3FCQUU4QjtnRUFDRjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUg1QkEsS0FBS0MsSUFBSSxDQUFDO0FBQ1ZELEtBQUtDLElBQUksQ0FBQztBQUdWRCxLQUFLQyxJQUFJLENBQUMsY0FBYztXQUFPO1FBQzdCQyxpQkFBaUI7bUJBQU0sSUFBSTs7SUFDN0I7O0FBRUFDLFNBQVMsd0JBQXdCLFdBQU07SUFDckNDLFdBQVcsV0FBTTtRQUNmSixLQUFLSyxhQUFhO0lBQ3BCO0lBRUFDLEdBQUcsNkRBQTZELFdBQU07UUFDcEUsSUFBTUMsTUFBTVAsS0FBS1EsS0FBSyxDQUFDQyxhQUFZO1FBQ25DQyxPQUFPSCxLQUFLSSxHQUFHLENBQUNDLGdCQUFnQjtJQUNsQztJQUVBTixHQUFHLDJDQUEyQyxXQUFNO1FBQ2xELElBQU1DLE1BQU1QLEtBQUtRLEtBQUssQ0FBQ0MsYUFBWTtRQUNuQ0ksb0JBQWEsQ0FBQ0MsSUFBSTtRQUNsQkosT0FBT0gsS0FBS0ssZ0JBQWdCO0lBQzlCO0FBQ0YifQ==
@@ -9,23 +9,30 @@ Object.defineProperty(exports, "consoleLogger", {
9
9
  }
10
10
  });
11
11
  var _params = require("../params");
12
- var _logger = require("./logger");
12
+ var _logWrapper = require("./logWrapper");
13
13
  var _util = require("../util");
14
- var loggerObject;
14
+ var _logdnaClient = require("../logger/logdnaClient");
15
+ var hasWrapped = false;
15
16
  var logParams = (0, _params.getLogParams)();
16
17
  /**
17
- * Initialise and wrap the native console object
18
+ * Initialise and wrap the native console log object
18
19
  * @param params
19
20
  */ var init = function() {
20
21
  var params = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : logParams;
22
+ if (hasWrapped) return;
21
23
  var AWS_LAMBDA_FUNCTION_NAME = process.env.AWS_LAMBDA_FUNCTION_NAME;
22
- // If has wrapped already, don't do it again
23
- if (!!loggerObject) return;
24
- var logDNAKey = params.logDNAKey, sendToRemote = params.sendToRemote;
24
+ var logDNAKey = params.logDNAKey, sendToRemote = params.sendToRemote, logLevel = params.logLevel;
25
25
  var isEnabled = (0, _util.isLogDNAEnabled)(logDNAKey, sendToRemote);
26
- // Wrap console object
27
- loggerObject = isEnabled ? (0, _logger.getLogger)(params) : {};
28
- if (!isEnabled && AWS_LAMBDA_FUNCTION_NAME !== undefined) {
26
+ if (isEnabled) {
27
+ // Create/reuse this logdna client instance so that we can use it in the console wrapper
28
+ var logDNAClient = (0, _logdnaClient.createLogDNAClient)(params);
29
+ // Wrap console object and keep the status
30
+ (0, _logWrapper.wrapAndSendToLogDNA)(logDNAClient, logLevel);
31
+ hasWrapped = true;
32
+ }
33
+ // What case is this?
34
+ var isFunctionNameAvailable = AWS_LAMBDA_FUNCTION_NAME !== undefined;
35
+ if (!isEnabled && isFunctionNameAvailable) {
29
36
  console.info("LOGDNA is disabled");
30
37
  }
31
38
  };
@@ -34,4 +41,4 @@ var consoleLogger = {
34
41
  flushAll: _util.flushAll
35
42
  };
36
43
 
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25zb2xlL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElMb2dETkFQYXJhbXMgfSBmcm9tICcuLi90eXBlcyc7XG5cbmltcG9ydCB7IGdldExvZ1BhcmFtcyB9IGZyb20gJy4uL3BhcmFtcyc7XG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgeyBpc0xvZ0ROQUVuYWJsZWQsIGZsdXNoQWxsIH0gZnJvbSAnLi4vdXRpbCc7XG5cbmxldCBsb2dnZXJPYmplY3Q6IGFueTtcbmNvbnN0IGxvZ1BhcmFtcyA9IGdldExvZ1BhcmFtcygpO1xuXG4vKipcbiAqIEluaXRpYWxpc2UgYW5kIHdyYXAgdGhlIG5hdGl2ZSBjb25zb2xlIG9iamVjdFxuICogQHBhcmFtIHBhcmFtc1xuICovXG5jb25zdCBpbml0ID0gKHBhcmFtczogSUxvZ0ROQVBhcmFtcyA9IGxvZ1BhcmFtcyk6IHZvaWQgPT4ge1xuICBjb25zdCB7IEFXU19MQU1CREFfRlVOQ1RJT05fTkFNRSB9ID0gcHJvY2Vzcy5lbnY7XG4gIC8vIElmIGhhcyB3cmFwcGVkIGFscmVhZHksIGRvbid0IGRvIGl0IGFnYWluXG4gIGlmICghIWxvZ2dlck9iamVjdCkgcmV0dXJuO1xuXG4gIGNvbnN0IHsgbG9nRE5BS2V5LCBzZW5kVG9SZW1vdGUgfSA9IHBhcmFtcztcbiAgY29uc3QgaXNFbmFibGVkID0gaXNMb2dETkFFbmFibGVkKGxvZ0ROQUtleSwgc2VuZFRvUmVtb3RlKTtcblxuICAvLyBXcmFwIGNvbnNvbGUgb2JqZWN0XG4gIGxvZ2dlck9iamVjdCA9IGlzRW5hYmxlZCA/IGdldExvZ2dlcihwYXJhbXMpIDoge307XG4gIGlmICghaXNFbmFibGVkICYmIEFXU19MQU1CREFfRlVOQ1RJT05fTkFNRSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgY29uc29sZS5pbmZvKGBMT0dETkEgaXMgZGlzYWJsZWRgKTtcbiAgfVxufTtcblxuY29uc3QgY29uc29sZUxvZ2dlciA9IHtcbiAgaW5pdCxcbiAgZmx1c2hBbGwsXG59O1xuXG5leHBvcnQgeyBjb25zb2xlTG9nZ2VyIH07XG4iXSwibmFtZXMiOlsiY29uc29sZUxvZ2dlciIsImxvZ2dlck9iamVjdCIsImxvZ1BhcmFtcyIsImdldExvZ1BhcmFtcyIsImluaXQiLCJwYXJhbXMiLCJBV1NfTEFNQkRBX0ZVTkNUSU9OX05BTUUiLCJwcm9jZXNzIiwiZW52IiwibG9nRE5BS2V5Iiwic2VuZFRvUmVtb3RlIiwiaXNFbmFibGVkIiwiaXNMb2dETkFFbmFibGVkIiwiZ2V0TG9nZ2VyIiwidW5kZWZpbmVkIiwiY29uc29sZSIsImluZm8iLCJmbHVzaEFsbCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFpQ1NBOzs7ZUFBQUE7OztzQkEvQm9CO3NCQUNIO29CQUNnQjtBQUUxQyxJQUFJQztBQUNKLElBQU1DLFlBQVlDLElBQUFBLG9CQUFZO0FBRTlCOzs7Q0FHQyxHQUNELElBQU1DLE9BQU8sV0FBNkM7UUFBNUNDLDBFQUF3Qkg7SUFDcEMsSUFBTSxBQUFFSSwyQkFBNkJDLFFBQVFDLEdBQUcsQ0FBeENGO0lBQ1IsNENBQTRDO0lBQzVDLElBQUksQ0FBQyxDQUFDTCxjQUFjO0lBRXBCLElBQVFRLFlBQTRCSixPQUE1QkksV0FBV0MsZUFBaUJMLE9BQWpCSztJQUNuQixJQUFNQyxZQUFZQyxJQUFBQSxxQkFBZSxFQUFDSCxXQUFXQztJQUU3QyxzQkFBc0I7SUFDdEJULGVBQWVVLFlBQVlFLElBQUFBLGlCQUFTLEVBQUNSLFVBQVUsQ0FBQyxDQUFDO0lBQ2pELElBQUksQ0FBQ00sYUFBYUwsNkJBQTZCUSxXQUFXO1FBQ3hEQyxRQUFRQyxJQUFJLENBQUU7SUFDaEIsQ0FBQztBQUNIO0FBRUEsSUFBTWhCLGdCQUFnQjtJQUNwQkksTUFBQUE7SUFDQWEsVUFBQUEsY0FBUTtBQUNWIn0=
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25zb2xlL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElMb2dETkFQYXJhbXMgfSBmcm9tICcuLi90eXBlcyc7XG5cbmltcG9ydCB7IGdldExvZ1BhcmFtcyB9IGZyb20gJy4uL3BhcmFtcyc7XG5pbXBvcnQgeyB3cmFwQW5kU2VuZFRvTG9nRE5BIH0gZnJvbSAnLi9sb2dXcmFwcGVyJztcbmltcG9ydCB7IGlzTG9nRE5BRW5hYmxlZCwgZmx1c2hBbGwgfSBmcm9tICcuLi91dGlsJztcbmltcG9ydCB7IGNyZWF0ZUxvZ0ROQUNsaWVudCB9IGZyb20gJy4uL2xvZ2dlci9sb2dkbmFDbGllbnQnO1xuaW1wb3J0IHsgdHlwZSBMb2dnZXIgfSBmcm9tICdAbG9nZG5hL2xvZ2dlcic7XG5cbmxldCBoYXNXcmFwcGVkOiBib29sZWFuID0gZmFsc2U7XG5jb25zdCBsb2dQYXJhbXMgPSBnZXRMb2dQYXJhbXMoKTtcblxuLyoqXG4gKiBJbml0aWFsaXNlIGFuZCB3cmFwIHRoZSBuYXRpdmUgY29uc29sZSBsb2cgb2JqZWN0XG4gKiBAcGFyYW0gcGFyYW1zXG4gKi9cbmNvbnN0IGluaXQgPSAocGFyYW1zOiBJTG9nRE5BUGFyYW1zID0gbG9nUGFyYW1zKTogdm9pZCA9PiB7XG4gIGlmIChoYXNXcmFwcGVkKSByZXR1cm47XG5cbiAgY29uc3QgeyBBV1NfTEFNQkRBX0ZVTkNUSU9OX05BTUUgfSA9IHByb2Nlc3MuZW52O1xuICBjb25zdCB7IGxvZ0ROQUtleSwgc2VuZFRvUmVtb3RlLCBsb2dMZXZlbCB9ID0gcGFyYW1zO1xuICBjb25zdCBpc0VuYWJsZWQgPSBpc0xvZ0ROQUVuYWJsZWQobG9nRE5BS2V5LCBzZW5kVG9SZW1vdGUpO1xuXG4gIGlmIChpc0VuYWJsZWQpIHtcbiAgICAvLyBDcmVhdGUvcmV1c2UgdGhpcyBsb2dkbmEgY2xpZW50IGluc3RhbmNlIHNvIHRoYXQgd2UgY2FuIHVzZSBpdCBpbiB0aGUgY29uc29sZSB3cmFwcGVyXG4gICAgY29uc3QgbG9nRE5BQ2xpZW50ID0gY3JlYXRlTG9nRE5BQ2xpZW50KHBhcmFtcykgYXMgTG9nZ2VyO1xuXG4gICAgLy8gV3JhcCBjb25zb2xlIG9iamVjdCBhbmQga2VlcCB0aGUgc3RhdHVzXG4gICAgd3JhcEFuZFNlbmRUb0xvZ0ROQShsb2dETkFDbGllbnQsIGxvZ0xldmVsKTtcbiAgICBoYXNXcmFwcGVkID0gdHJ1ZTtcbiAgfVxuXG4gIC8vIFdoYXQgY2FzZSBpcyB0aGlzP1xuICBjb25zdCBpc0Z1bmN0aW9uTmFtZUF2YWlsYWJsZSA9IEFXU19MQU1CREFfRlVOQ1RJT05fTkFNRSAhPT0gdW5kZWZpbmVkO1xuICBpZiAoIWlzRW5hYmxlZCAmJiBpc0Z1bmN0aW9uTmFtZUF2YWlsYWJsZSkge1xuICAgIGNvbnNvbGUuaW5mbyhgTE9HRE5BIGlzIGRpc2FibGVkYCk7XG4gIH1cbn07XG5cbmNvbnN0IGNvbnNvbGVMb2dnZXIgPSB7XG4gIGluaXQsXG4gIGZsdXNoQWxsLFxufTtcblxuZXhwb3J0IHsgY29uc29sZUxvZ2dlciB9O1xuIl0sIm5hbWVzIjpbImNvbnNvbGVMb2dnZXIiLCJoYXNXcmFwcGVkIiwibG9nUGFyYW1zIiwiZ2V0TG9nUGFyYW1zIiwiaW5pdCIsInBhcmFtcyIsIkFXU19MQU1CREFfRlVOQ1RJT05fTkFNRSIsInByb2Nlc3MiLCJlbnYiLCJsb2dETkFLZXkiLCJzZW5kVG9SZW1vdGUiLCJsb2dMZXZlbCIsImlzRW5hYmxlZCIsImlzTG9nRE5BRW5hYmxlZCIsImxvZ0ROQUNsaWVudCIsImNyZWF0ZUxvZ0ROQUNsaWVudCIsIndyYXBBbmRTZW5kVG9Mb2dETkEiLCJpc0Z1bmN0aW9uTmFtZUF2YWlsYWJsZSIsInVuZGVmaW5lZCIsImNvbnNvbGUiLCJpbmZvIiwiZmx1c2hBbGwiXSwibWFwcGluZ3MiOiI7Ozs7K0JBMkNTQTs7O2VBQUFBOzs7c0JBekNvQjswQkFDTztvQkFDTTs0QkFDUDtBQUduQyxJQUFJQyxhQUFzQixLQUFLO0FBQy9CLElBQU1DLFlBQVlDLElBQUFBLG9CQUFZO0FBRTlCOzs7Q0FHQyxHQUNELElBQU1DLE9BQU8sV0FBNkM7UUFBNUNDLDBFQUF3Qkg7SUFDcEMsSUFBSUQsWUFBWTtJQUVoQixJQUFNLEFBQUVLLDJCQUE2QkMsUUFBUUMsR0FBRyxDQUF4Q0Y7SUFDUixJQUFRRyxZQUFzQ0osT0FBdENJLFdBQVdDLGVBQTJCTCxPQUEzQkssY0FBY0MsV0FBYU4sT0FBYk07SUFDakMsSUFBTUMsWUFBWUMsSUFBQUEscUJBQWUsRUFBQ0osV0FBV0M7SUFFN0MsSUFBSUUsV0FBVztRQUNiLHdGQUF3RjtRQUN4RixJQUFNRSxlQUFlQyxJQUFBQSxnQ0FBa0IsRUFBQ1Y7UUFFeEMsMENBQTBDO1FBQzFDVyxJQUFBQSwrQkFBbUIsRUFBQ0YsY0FBY0g7UUFDbENWLGFBQWEsSUFBSTtJQUNuQixDQUFDO0lBRUQscUJBQXFCO0lBQ3JCLElBQU1nQiwwQkFBMEJYLDZCQUE2Qlk7SUFDN0QsSUFBSSxDQUFDTixhQUFhSyx5QkFBeUI7UUFDekNFLFFBQVFDLElBQUksQ0FBRTtJQUNoQixDQUFDO0FBQ0g7QUFFQSxJQUFNcEIsZ0JBQWdCO0lBQ3BCSSxNQUFBQTtJQUNBaUIsVUFBQUEsY0FBUTtBQUNWIn0=
@@ -0,0 +1,4 @@
1
+ import { type Logger } from '@logdna/logger';
2
+ declare const wrapAndSendToLogDNA: (logDNAClient: Logger, logLevel: string) => void;
3
+ declare const getDefaultConsoleLog: () => any;
4
+ export { wrapAndSendToLogDNA, getDefaultConsoleLog };
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: all[name]
9
+ });
10
+ }
11
+ _export(exports, {
12
+ wrapAndSendToLogDNA: function() {
13
+ return wrapAndSendToLogDNA;
14
+ },
15
+ getDefaultConsoleLog: function() {
16
+ return getDefaultConsoleLog;
17
+ }
18
+ });
19
+ function _arrayLikeToArray(arr, len) {
20
+ if (len == null || len > arr.length) len = arr.length;
21
+ for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
22
+ return arr2;
23
+ }
24
+ function _arrayWithoutHoles(arr) {
25
+ if (Array.isArray(arr)) return _arrayLikeToArray(arr);
26
+ }
27
+ function _iterableToArray(iter) {
28
+ if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
29
+ }
30
+ function _nonIterableSpread() {
31
+ throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
32
+ }
33
+ function _toConsumableArray(arr) {
34
+ return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
35
+ }
36
+ function _unsupportedIterableToArray(o, minLen) {
37
+ if (!o) return;
38
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
39
+ var n = Object.prototype.toString.call(o).slice(8, -1);
40
+ if (n === "Object" && o.constructor) n = o.constructor.name;
41
+ if (n === "Map" || n === "Set") return Array.from(n);
42
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
43
+ }
44
+ // Original console functions
45
+ var _log = console.log;
46
+ var _info = console.info;
47
+ var _warn = console.warn;
48
+ var _error = console.error;
49
+ var wrapAndSendToLogDNA = function(logDNAClient, logLevel) {
50
+ if (logLevel === "debug") {
51
+ _log("--------------------- Wrapping Console -----------------------");
52
+ }
53
+ var log = function log() {
54
+ for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){
55
+ args[_key] = arguments[_key];
56
+ }
57
+ if (logLevel === "debug") {
58
+ (logDNAClient === null || logDNAClient === void 0 ? void 0 : logDNAClient.debug) && (logDNAClient === null || logDNAClient === void 0 ? void 0 : logDNAClient.debug(_toConsumableArray(args).join(" ")));
59
+ }
60
+ _log.apply(void 0, _toConsumableArray(args));
61
+ };
62
+ var info = function info() {
63
+ for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){
64
+ args[_key] = arguments[_key];
65
+ }
66
+ if ([
67
+ "debug",
68
+ "info"
69
+ ].indexOf(logLevel) !== -1) {
70
+ (logDNAClient === null || logDNAClient === void 0 ? void 0 : logDNAClient.info) && (logDNAClient === null || logDNAClient === void 0 ? void 0 : logDNAClient.info(_toConsumableArray(args).join(" ")));
71
+ }
72
+ _info.apply(void 0, _toConsumableArray(args));
73
+ };
74
+ var warn = function warn() {
75
+ for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){
76
+ args[_key] = arguments[_key];
77
+ }
78
+ (logDNAClient === null || logDNAClient === void 0 ? void 0 : logDNAClient.warn) && logDNAClient.warn(_toConsumableArray(args).join(" "));
79
+ _warn.apply(void 0, _toConsumableArray(args));
80
+ };
81
+ var error = function error() {
82
+ for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){
83
+ args[_key] = arguments[_key];
84
+ }
85
+ (logDNAClient === null || logDNAClient === void 0 ? void 0 : logDNAClient.error) && logDNAClient.error(_toConsumableArray(args).join(" "));
86
+ _error.apply(void 0, _toConsumableArray(args));
87
+ };
88
+ // Override default functions with our wrapped functions
89
+ console.log = log;
90
+ console.debug = log;
91
+ console.info = info;
92
+ console.warn = warn;
93
+ console.error = error;
94
+ };
95
+ var getDefaultConsoleLog = function() {
96
+ return _log;
97
+ };
98
+
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25zb2xlL2xvZ1dyYXBwZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBMb2dnZXIgfSBmcm9tICdAbG9nZG5hL2xvZ2dlcic7XG5cbi8vIE9yaWdpbmFsIGNvbnNvbGUgZnVuY3Rpb25zXG5jb25zdCBfbG9nID0gY29uc29sZS5sb2c7XG5jb25zdCBfaW5mbyA9IGNvbnNvbGUuaW5mbztcbmNvbnN0IF93YXJuID0gY29uc29sZS53YXJuO1xuY29uc3QgX2Vycm9yID0gY29uc29sZS5lcnJvcjtcblxuY29uc3Qgd3JhcEFuZFNlbmRUb0xvZ0ROQSA9IChsb2dETkFDbGllbnQ6IExvZ2dlciwgbG9nTGV2ZWw6IHN0cmluZyk6IHZvaWQgPT4ge1xuICBpZiAobG9nTGV2ZWwgPT09ICdkZWJ1ZycpIHtcbiAgICBfbG9nKCctLS0tLS0tLS0tLS0tLS0tLS0tLS0gV3JhcHBpbmcgQ29uc29sZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLScpO1xuICB9XG5cbiAgY29uc3QgbG9nID0gZnVuY3Rpb24gKC4uLmFyZ3M6IGFueVtdKSB7XG4gICAgaWYgKGxvZ0xldmVsID09PSAnZGVidWcnKSB7XG4gICAgICBsb2dETkFDbGllbnQ/LmRlYnVnICYmIGxvZ0ROQUNsaWVudD8uZGVidWcoWy4uLmFyZ3NdLmpvaW4oJyAnKSk7XG4gICAgfVxuICAgIF9sb2coLi4uYXJncyk7XG4gIH07XG5cbiAgY29uc3QgaW5mbyA9IGZ1bmN0aW9uICguLi5hcmdzOiBhbnlbXSkge1xuICAgIGlmIChbJ2RlYnVnJywgJ2luZm8nXS5pbmRleE9mKGxvZ0xldmVsKSAhPT0gLTEpIHtcbiAgICAgIGxvZ0ROQUNsaWVudD8uaW5mbyAmJiBsb2dETkFDbGllbnQ/LmluZm8oWy4uLmFyZ3NdLmpvaW4oJyAnKSk7XG4gICAgfVxuICAgIF9pbmZvKC4uLmFyZ3MpO1xuICB9O1xuXG4gIGNvbnN0IHdhcm4gPSBmdW5jdGlvbiAoLi4uYXJnczogYW55W10pIHtcbiAgICBsb2dETkFDbGllbnQ/Lndhcm4gJiYgbG9nRE5BQ2xpZW50Lndhcm4oWy4uLmFyZ3NdLmpvaW4oJyAnKSk7XG4gICAgX3dhcm4oLi4uYXJncyk7XG4gIH07XG5cbiAgY29uc3QgZXJyb3IgPSBmdW5jdGlvbiAoLi4uYXJnczogYW55W10pIHtcbiAgICBsb2dETkFDbGllbnQ/LmVycm9yICYmIGxvZ0ROQUNsaWVudC5lcnJvcihbLi4uYXJnc10uam9pbignICcpKTtcbiAgICBfZXJyb3IoLi4uYXJncyk7XG4gIH07XG5cbiAgLy8gT3ZlcnJpZGUgZGVmYXVsdCBmdW5jdGlvbnMgd2l0aCBvdXIgd3JhcHBlZCBmdW5jdGlvbnNcbiAgY29uc29sZS5sb2cgPSBsb2c7XG4gIGNvbnNvbGUuZGVidWcgPSBsb2c7XG4gIGNvbnNvbGUuaW5mbyA9IGluZm87XG4gIGNvbnNvbGUud2FybiA9IHdhcm47XG4gIGNvbnNvbGUuZXJyb3IgPSBlcnJvcjtcbn07XG5cbmNvbnN0IGdldERlZmF1bHRDb25zb2xlTG9nID0gKCk6IGFueSA9PiBfbG9nO1xuXG5leHBvcnQgeyB3cmFwQW5kU2VuZFRvTG9nRE5BLCBnZXREZWZhdWx0Q29uc29sZUxvZyB9O1xuIl0sIm5hbWVzIjpbIndyYXBBbmRTZW5kVG9Mb2dETkEiLCJnZXREZWZhdWx0Q29uc29sZUxvZyIsIl9sb2ciLCJjb25zb2xlIiwibG9nIiwiX2luZm8iLCJpbmZvIiwiX3dhcm4iLCJ3YXJuIiwiX2Vycm9yIiwiZXJyb3IiLCJsb2dETkFDbGllbnQiLCJsb2dMZXZlbCIsImFyZ3MiLCJkZWJ1ZyIsImpvaW4iLCJpbmRleE9mIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQStDU0EsbUJBQW1CO2VBQW5CQTs7SUFBcUJDLG9CQUFvQjtlQUFwQkE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUE3QzlCLDZCQUE2QjtBQUM3QixJQUFNQyxPQUFPQyxRQUFRQyxHQUFHO0FBQ3hCLElBQU1DLFFBQVFGLFFBQVFHLElBQUk7QUFDMUIsSUFBTUMsUUFB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
package/dist/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import { consoleLogger } from './console';
2
2
  import { logger } from './logger';
3
+ import { getLoggerObject } from './logger/util';
3
4
  import { getLogParams } from './params';
4
5
  import { flushAll, ensureFlushAll, ensureFlushAllCallback } from './util';
5
- export { consoleLogger, logger, getLogParams, flushAll, ensureFlushAll, ensureFlushAllCallback };
6
+ export { consoleLogger, logger, getLoggerObject, getLogParams, flushAll, ensureFlushAll, ensureFlushAllCallback };
package/dist/index.js CHANGED
@@ -15,22 +15,26 @@ _export(exports, {
15
15
  logger: function() {
16
16
  return _logger.logger;
17
17
  },
18
+ getLoggerObject: function() {
19
+ return _util.getLoggerObject;
20
+ },
18
21
  getLogParams: function() {
19
22
  return _params.getLogParams;
20
23
  },
21
24
  flushAll: function() {
22
- return _util.flushAll;
25
+ return _util1.flushAll;
23
26
  },
24
27
  ensureFlushAll: function() {
25
- return _util.ensureFlushAll;
28
+ return _util1.ensureFlushAll;
26
29
  },
27
30
  ensureFlushAllCallback: function() {
28
- return _util.ensureFlushAllCallback;
31
+ return _util1.ensureFlushAllCallback;
29
32
  }
30
33
  });
31
34
  var _console = require("./console");
32
35
  var _logger = require("./logger");
36
+ var _util = require("./logger/util");
33
37
  var _params = require("./params");
34
- var _util = require("./util");
38
+ var _util1 = require("./util");
35
39
 
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb25zb2xlTG9nZ2VyIH0gZnJvbSAnLi9jb25zb2xlJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IGdldExvZ1BhcmFtcyB9IGZyb20gJy4vcGFyYW1zJztcbmltcG9ydCB7IGZsdXNoQWxsLCBlbnN1cmVGbHVzaEFsbCwgZW5zdXJlRmx1c2hBbGxDYWxsYmFjayB9IGZyb20gJy4vdXRpbCc7XG5leHBvcnQgeyBjb25zb2xlTG9nZ2VyLCBsb2dnZXIsIGdldExvZ1BhcmFtcywgZmx1c2hBbGwsIGVuc3VyZUZsdXNoQWxsLCBlbnN1cmVGbHVzaEFsbENhbGxiYWNrIH07XG4iXSwibmFtZXMiOlsiY29uc29sZUxvZ2dlciIsImxvZ2dlciIsImdldExvZ1BhcmFtcyIsImZsdXNoQWxsIiwiZW5zdXJlRmx1c2hBbGwiLCJlbnN1cmVGbHVzaEFsbENhbGxiYWNrIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQUlTQSxhQUFhO2VBQWJBLHNCQUFhOztJQUFFQyxNQUFNO2VBQU5BLGNBQU07O0lBQUVDLFlBQVk7ZUFBWkEsb0JBQVk7O0lBQUVDLFFBQVE7ZUFBUkEsY0FBUTs7SUFBRUMsY0FBYztlQUFkQSxvQkFBYzs7SUFBRUMsc0JBQXNCO2VBQXRCQSw0QkFBc0I7Ozt1QkFKaEU7c0JBQ1A7c0JBQ007b0JBQ29DIn0=
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb25zb2xlTG9nZ2VyIH0gZnJvbSAnLi9jb25zb2xlJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IGdldExvZ2dlck9iamVjdCB9IGZyb20gJy4vbG9nZ2VyL3V0aWwnO1xuaW1wb3J0IHsgZ2V0TG9nUGFyYW1zIH0gZnJvbSAnLi9wYXJhbXMnO1xuaW1wb3J0IHsgZmx1c2hBbGwsIGVuc3VyZUZsdXNoQWxsLCBlbnN1cmVGbHVzaEFsbENhbGxiYWNrIH0gZnJvbSAnLi91dGlsJztcblxuLy8gRXhwb3J0IGFsbCB0aGUgZnVuY3Rpb25zXG5leHBvcnQgeyBjb25zb2xlTG9nZ2VyLCBsb2dnZXIsIGdldExvZ2dlck9iamVjdCwgZ2V0TG9nUGFyYW1zLCBmbHVzaEFsbCwgZW5zdXJlRmx1c2hBbGwsIGVuc3VyZUZsdXNoQWxsQ2FsbGJhY2sgfTtcbiJdLCJuYW1lcyI6WyJjb25zb2xlTG9nZ2VyIiwibG9nZ2VyIiwiZ2V0TG9nZ2VyT2JqZWN0IiwiZ2V0TG9nUGFyYW1zIiwiZmx1c2hBbGwiLCJlbnN1cmVGbHVzaEFsbCIsImVuc3VyZUZsdXNoQWxsQ2FsbGJhY2siXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBT1NBLGFBQWE7ZUFBYkEsc0JBQWE7O0lBQUVDLE1BQU07ZUFBTkEsY0FBTTs7SUFBRUMsZUFBZTtlQUFmQSxxQkFBZTs7SUFBRUMsWUFBWTtlQUFaQSxvQkFBWTs7SUFBRUMsUUFBUTtlQUFSQSxlQUFROztJQUFFQyxjQUFjO2VBQWRBLHFCQUFjOztJQUFFQyxzQkFBc0I7ZUFBdEJBLDZCQUFzQjs7O3VCQVBqRjtzQkFDUDtvQkFDUztzQkFDSDtxQkFDb0MifQ==