@orion-js/logger 4.0.0-next.2 → 4.0.0-next.4
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/LICENSE +21 -0
- package/dist/index.cjs +57 -81
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -4
- package/dist/index.d.ts +3 -4
- package/dist/index.js +59 -85
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2022 Orionjs Team
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/dist/index.cjs
CHANGED
|
@@ -4,7 +4,6 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
|
4
4
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
5
|
var __getProtoOf = Object.getPrototypeOf;
|
|
6
6
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
8
7
|
var __export = (target, all) => {
|
|
9
8
|
for (var name in all)
|
|
10
9
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -100,36 +99,35 @@ function getMetadataText(metadata2) {
|
|
|
100
99
|
}
|
|
101
100
|
return `${import_node_util.default.inspect(value)} ${import_node_util.default.inspect(rest)}`;
|
|
102
101
|
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
fillExcept: [
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
const fileNameLabel = info.fileName ? `[${info.fileName}]` : "";
|
|
115
|
-
const stack = info.stack ? `
|
|
102
|
+
var textConsoleFormat = combine(
|
|
103
|
+
colorize(),
|
|
104
|
+
metadata({ fillExcept: ["fileName", "level", "message", "stack"] }),
|
|
105
|
+
opentelemetryContext(),
|
|
106
|
+
metaError(),
|
|
107
|
+
timestamp(),
|
|
108
|
+
printf((info) => {
|
|
109
|
+
const date = new Date(info.timestamp);
|
|
110
|
+
const timeLabel = `${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`;
|
|
111
|
+
const fileNameLabel = info.fileName ? `[${info.fileName}]` : "";
|
|
112
|
+
const stack = info.stack ? `
|
|
116
113
|
${info.stack}` : "";
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
})
|
|
114
|
+
const value = getMetadataText(info.metadata);
|
|
115
|
+
const traceId = info.trace_id ? `${String(info.trace_id).substring(0, 8)}@${String(info.span_id).substring(0, 8)}` : "";
|
|
116
|
+
const context = `${info.context || ""} ${traceId}`.trim();
|
|
117
|
+
return `[${info.level}] [${timeLabel}] [${context}] ${fileNameLabel} ${info.message} ${value} ${stack}`;
|
|
118
|
+
})
|
|
119
|
+
);
|
|
122
120
|
var textConsoleTransport = new import_winston.transports.Console({
|
|
123
121
|
handleExceptions: true,
|
|
124
122
|
format: textConsoleFormat
|
|
125
123
|
});
|
|
126
|
-
var jsonConsoleFormat = combine(
|
|
127
|
-
fillExcept: [
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
124
|
+
var jsonConsoleFormat = combine(
|
|
125
|
+
metadata({ fillExcept: ["fileName", "level", "message"] }),
|
|
126
|
+
opentelemetryContext(),
|
|
127
|
+
metaError(),
|
|
128
|
+
timestamp(),
|
|
129
|
+
json()
|
|
130
|
+
);
|
|
133
131
|
var jsonConsoleTransport = new import_winston.transports.Console({
|
|
134
132
|
handleExceptions: true,
|
|
135
133
|
format: jsonConsoleFormat
|
|
@@ -139,7 +137,7 @@ var jsonConsoleTransport = new import_winston.transports.Console({
|
|
|
139
137
|
var import_winston2 = require("winston");
|
|
140
138
|
|
|
141
139
|
// src/helpers/getFileName.ts
|
|
142
|
-
var getFileName =
|
|
140
|
+
var getFileName = () => {
|
|
143
141
|
try {
|
|
144
142
|
const stack = new Error().stack;
|
|
145
143
|
const lines = stack.split("\n");
|
|
@@ -148,8 +146,8 @@ var getFileName = /* @__PURE__ */ __name(() => {
|
|
|
148
146
|
} catch (error) {
|
|
149
147
|
return;
|
|
150
148
|
}
|
|
151
|
-
}
|
|
152
|
-
var improveFileName =
|
|
149
|
+
};
|
|
150
|
+
var improveFileName = (path) => {
|
|
153
151
|
if (path.includes("orionjs/packages")) {
|
|
154
152
|
return path.replace(/^.+\/orionjs\/packages\//, "@orion-js/");
|
|
155
153
|
}
|
|
@@ -167,7 +165,7 @@ var improveFileName = /* @__PURE__ */ __name((path) => {
|
|
|
167
165
|
return `${parts[0]}`;
|
|
168
166
|
}
|
|
169
167
|
return path;
|
|
170
|
-
}
|
|
168
|
+
};
|
|
171
169
|
|
|
172
170
|
// src/logger.ts
|
|
173
171
|
var transports2 = [
|
|
@@ -176,74 +174,52 @@ var transports2 = [
|
|
|
176
174
|
var winstonLogger = (0, import_winston2.createLogger)({
|
|
177
175
|
levels: import_winston2.config.npm.levels,
|
|
178
176
|
handleExceptions: true,
|
|
179
|
-
format: import_winston2.format.errors({
|
|
180
|
-
stack: true
|
|
181
|
-
}),
|
|
177
|
+
format: import_winston2.format.errors({ stack: true }),
|
|
182
178
|
transports: transports2
|
|
183
179
|
});
|
|
184
|
-
var configureLogger =
|
|
180
|
+
var configureLogger = (options) => {
|
|
185
181
|
return winstonLogger.configure(options);
|
|
186
|
-
}
|
|
187
|
-
var setLogLevel =
|
|
182
|
+
};
|
|
183
|
+
var setLogLevel = (level) => {
|
|
188
184
|
return winstonLogger.level = level;
|
|
189
|
-
}
|
|
190
|
-
var addTransport =
|
|
185
|
+
};
|
|
186
|
+
var addTransport = (transport) => {
|
|
191
187
|
return winstonLogger.add(transport);
|
|
192
|
-
}
|
|
193
|
-
var getLogger =
|
|
194
|
-
return winstonLogger.child({
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
}, "getLogger");
|
|
198
|
-
var createLogger = /* @__PURE__ */ __name((logger2) => {
|
|
188
|
+
};
|
|
189
|
+
var getLogger = (context) => {
|
|
190
|
+
return winstonLogger.child({ context });
|
|
191
|
+
};
|
|
192
|
+
var createLogger = (logger2) => {
|
|
199
193
|
return {
|
|
200
|
-
debug:
|
|
194
|
+
debug: (message, value) => {
|
|
201
195
|
const fileName = getFileName();
|
|
202
|
-
return logger2.debug({
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
value
|
|
206
|
-
});
|
|
207
|
-
}, "debug"),
|
|
208
|
-
info: /* @__PURE__ */ __name((message, value) => {
|
|
196
|
+
return logger2.debug({ message, fileName, value });
|
|
197
|
+
},
|
|
198
|
+
info: (message, value) => {
|
|
209
199
|
const fileName = getFileName();
|
|
210
|
-
return logger2.info({
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
value
|
|
214
|
-
});
|
|
215
|
-
}, "info"),
|
|
216
|
-
warn: /* @__PURE__ */ __name((message, value) => {
|
|
200
|
+
return logger2.info({ message, fileName, value });
|
|
201
|
+
},
|
|
202
|
+
warn: (message, value) => {
|
|
217
203
|
const fileName = getFileName();
|
|
218
|
-
return logger2.warn({
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
value
|
|
222
|
-
});
|
|
223
|
-
}, "warn"),
|
|
224
|
-
error: /* @__PURE__ */ __name((message, value) => {
|
|
204
|
+
return logger2.warn({ message, fileName, value });
|
|
205
|
+
},
|
|
206
|
+
error: (message, value) => {
|
|
225
207
|
const fileName = getFileName();
|
|
226
|
-
return logger2.error({
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
value
|
|
230
|
-
});
|
|
231
|
-
}, "error"),
|
|
232
|
-
addContext: /* @__PURE__ */ __name((module2) => {
|
|
208
|
+
return logger2.error({ message, fileName, value });
|
|
209
|
+
},
|
|
210
|
+
addContext: (module2) => {
|
|
233
211
|
if (module2.id) {
|
|
234
212
|
const split = String(module2.id).split(".orion/build/");
|
|
235
213
|
const fileName = split.length > 1 ? split[1] : split[0];
|
|
236
|
-
return createLogger(logger2.child({
|
|
237
|
-
fileName
|
|
238
|
-
}));
|
|
214
|
+
return createLogger(logger2.child({ fileName }));
|
|
239
215
|
}
|
|
240
216
|
return createLogger(logger2.child({}));
|
|
241
|
-
},
|
|
242
|
-
addMetadata:
|
|
217
|
+
},
|
|
218
|
+
addMetadata: (metadata2) => {
|
|
243
219
|
return createLogger(logger2.child(metadata2));
|
|
244
|
-
}
|
|
220
|
+
}
|
|
245
221
|
};
|
|
246
|
-
}
|
|
222
|
+
};
|
|
247
223
|
var logger = createLogger(winstonLogger);
|
|
248
224
|
// Annotate the CommonJS export names for ESM import in node:
|
|
249
225
|
0 && (module.exports = {
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/formats.ts","../src/logger.ts","../src/helpers/getFileName.ts"],"sourcesContent":["import winston from 'winston'\n\nexport * from './formats'\nexport * from './logger'\nexport * from './types'\n\nexport {winston}\n","import {format, transports} from 'winston'\nimport util from 'node:util'\nimport {isEmpty} from 'lodash'\nimport opentelemetry, {Span} from '@opentelemetry/api'\n\nconst {metadata, timestamp, json, colorize, combine, printf} = format\n\nconst opentelemetryContext = format(info => {\n const activeSpan: Span & {name?: string} = opentelemetry.trace.getActiveSpan()\n if (activeSpan) {\n const spanContex = activeSpan.spanContext()\n if (activeSpan.name && !info.context) {\n info.context = activeSpan.name\n }\n const fields = {\n trace_id: spanContex.traceId,\n span_id: spanContex.spanId,\n trace_flags: `0${spanContex.traceFlags.toString(16)}`,\n }\n Object.assign(info, fields)\n }\n return info\n})\n\nconst metaError = format((info: any) => {\n if (info?.metadata?.value?.error instanceof Error) {\n info.stack = info?.metadata?.value?.error.stack\n info.errorMessage = info?.metadata?.value?.error.message\n delete info?.metadata?.value?.error\n }\n\n if (info?.metadata?.value instanceof Error) {\n info.stack = info?.metadata?.value.stack\n info.errorMessage = info?.metadata?.value.message\n delete info?.metadata?.value\n }\n\n return info\n})\n\nexport const sentryFormat = format(info => {\n const {path, label, ...extra} = info\n return {\n ...extra,\n tags: {\n path: path || '',\n request_id: label,\n },\n }\n})\n\nfunction getMetadataText(metadata: any) {\n const {value, ...rest} = metadata\n if (isEmpty(rest)) {\n if (typeof value === 'undefined') return ''\n return util.inspect(value)\n }\n return `${util.inspect(value)} ${util.inspect(rest)}`\n}\n\nexport const textConsoleFormat = combine(\n colorize(),\n metadata({fillExcept: ['fileName', 'level', 'message', 'stack']}),\n opentelemetryContext(),\n metaError(),\n timestamp(),\n printf((info: any) => {\n // console.log(info)\n\n const date = new Date(info.timestamp)\n const timeLabel = `${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`\n const fileNameLabel = info.fileName ? `[${info.fileName}]` : ''\n const stack = info.stack ? `\\n${info.stack}` : ''\n const value = getMetadataText(info.metadata)\n const traceId = info.trace_id\n ? `${String(info.trace_id).substring(0, 8)}@${String(info.span_id).substring(0, 8)}`\n : ''\n const context = `${info.context || ''} ${traceId}`.trim()\n\n return `[${info.level}] [${timeLabel}] [${context}] ${fileNameLabel} ${info.message} ${value} ${stack}`\n }),\n)\n\nexport const textConsoleTransport = new transports.Console({\n handleExceptions: true,\n format: textConsoleFormat,\n})\n\nexport const jsonConsoleFormat = combine(\n metadata({fillExcept: ['fileName', 'level', 'message']}),\n opentelemetryContext(),\n metaError(),\n timestamp(),\n json(),\n)\n\nexport const jsonConsoleTransport = new transports.Console({\n handleExceptions: true,\n format: jsonConsoleFormat,\n})\n","import winston, {createLogger as winstonCreateLogger, config, format} from 'winston'\nimport {jsonConsoleTransport, textConsoleTransport} from './formats'\nimport {getFileName} from './helpers/getFileName'\nimport {OrionLogger} from './types'\n\nconst transports: winston.transport[] = [\n (process.env.NODE_ENV !== 'production' || process.env.ORION_DEV || process.env.JEST_WORKER_ID) ? textConsoleTransport : jsonConsoleTransport\n]\n\nexport const winstonLogger = winstonCreateLogger({\n levels: config.npm.levels,\n handleExceptions: true,\n format: format.errors({stack: true}),\n transports: transports\n})\n\nexport const configureLogger = (options: winston.LoggerOptions) => {\n return winstonLogger.configure(options)\n}\n\nexport const setLogLevel = (level: string) => {\n return (winstonLogger.level = level)\n}\n\nexport const addTransport = (transport: winston.transport) => {\n return winstonLogger.add(transport)\n}\n\nexport const getLogger = (context: string) => {\n return winstonLogger.child({context})\n}\n\nconst createLogger = (logger: winston.Logger): OrionLogger => {\n return {\n debug: (message: string, value: any) => {\n const fileName = getFileName()\n return logger.debug({message, fileName, value})\n },\n info: (message: string, value: any) => {\n const fileName = getFileName()\n return logger.info({message, fileName, value})\n },\n warn: (message: string, value: any) => {\n const fileName = getFileName()\n return logger.warn({message, fileName, value})\n },\n error: (message: string, value: any) => {\n const fileName = getFileName()\n return logger.error({message, fileName, value})\n },\n addContext: (module: NodeJS.Module) => {\n if (module.id) {\n const split = String(module.id).split('.orion/build/')\n const fileName = split.length > 1 ? split[1] : split[0]\n return createLogger(logger.child({fileName}))\n }\n return createLogger(logger.child({}))\n },\n addMetadata: (metadata: any) => {\n return createLogger(logger.child(metadata))\n }\n }\n}\n\nexport const logger = createLogger(winstonLogger)\n","export const getFileName = () => {\n try {\n const stack = new Error().stack\n const lines = stack.split('\\n')\n const filePath = lines[3].split('(')[1].split(')')[0]\n return improveFileName(filePath)\n } catch (error) {\n return\n }\n}\n\nexport const improveFileName = (path: string) => {\n if (path.includes('orionjs/packages')) {\n return path.replace(/^.+\\/orionjs\\/packages\\//, '@orion-js/')\n }\n\n if (path.includes('.orion/build')) {\n return path.replace(/^.+\\.orion\\/build\\//, '')\n }\n\n if (path.includes('/node_modules/@')) {\n const after = path.split('/node_modules/')[1]\n const parts = after.split('/')\n return `${parts[0]}/${parts[1]}`\n }\n\n if (path.includes('/node_modules/')) {\n const after = path.split('/node_modules/')[1]\n const parts = after.split('/')\n return `${parts[0]}`\n }\n\n return path\n}\n"],"mappings":"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","names":["winston","import_winston","metadata","timestamp","json","colorize","combine","printf","format","opentelemetryContext","info","activeSpan","opentelemetry","trace","getActiveSpan","spanContex","spanContext","name","context","fields","trace_id","traceId","span_id","spanId","trace_flags","traceFlags","toString","Object","assign","metaError","value","error","Error","stack","errorMessage","message","sentryFormat","path","label","extra","tags","request_id","getMetadataText","rest","isEmpty","util","inspect","textConsoleFormat","fillExcept","date","Date","timeLabel","getHours","getMinutes","getSeconds","fileNameLabel","fileName","String","substring","trim","level","textConsoleTransport","transports","Console","handleExceptions","jsonConsoleFormat","jsonConsoleTransport","import_winston","getFileName","stack","Error","lines","split","filePath","improveFileName","error","path","includes","replace","after","parts","transports","process","env","NODE_ENV","ORION_DEV","JEST_WORKER_ID","textConsoleTransport","jsonConsoleTransport","winstonLogger","winstonCreateLogger","levels","config","npm","handleExceptions","format","errors","stack","configureLogger","options","configure","setLogLevel","level","addTransport","transport","add","getLogger","context","child","createLogger","logger","debug","message","value","fileName","getFileName","info","warn","error","addContext","module","id","split","String","length","addMetadata","metadata"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/formats.ts","../src/logger.ts","../src/helpers/getFileName.ts"],"sourcesContent":["import winston from 'winston'\n\nexport * from './formats'\nexport * from './logger'\nexport * from './types'\n\nexport {winston}\n","import {format, transports} from 'winston'\nimport util from 'node:util'\nimport {isEmpty} from 'lodash'\nimport opentelemetry, {Span} from '@opentelemetry/api'\n\nconst {metadata, timestamp, json, colorize, combine, printf} = format\n\nconst opentelemetryContext = format(info => {\n const activeSpan: Span & {name?: string} = opentelemetry.trace.getActiveSpan()\n if (activeSpan) {\n const spanContex = activeSpan.spanContext()\n if (activeSpan.name && !info.context) {\n info.context = activeSpan.name\n }\n const fields = {\n trace_id: spanContex.traceId,\n span_id: spanContex.spanId,\n trace_flags: `0${spanContex.traceFlags.toString(16)}`,\n }\n Object.assign(info, fields)\n }\n return info\n})\n\nconst metaError = format((info: any) => {\n if (info?.metadata?.value?.error instanceof Error) {\n info.stack = info?.metadata?.value?.error.stack\n info.errorMessage = info?.metadata?.value?.error.message\n delete info?.metadata?.value?.error\n }\n\n if (info?.metadata?.value instanceof Error) {\n info.stack = info?.metadata?.value.stack\n info.errorMessage = info?.metadata?.value.message\n delete info?.metadata?.value\n }\n\n return info\n})\n\nexport const sentryFormat: any = format(info => {\n const {path, label, ...extra} = info\n return {\n ...extra,\n tags: {\n path: path || '',\n request_id: label,\n },\n }\n})\n\nfunction getMetadataText(metadata: any) {\n const {value, ...rest} = metadata\n if (isEmpty(rest)) {\n if (typeof value === 'undefined') return ''\n return util.inspect(value)\n }\n return `${util.inspect(value)} ${util.inspect(rest)}`\n}\n\nexport const textConsoleFormat: any = combine(\n colorize(),\n metadata({fillExcept: ['fileName', 'level', 'message', 'stack']}),\n opentelemetryContext(),\n metaError(),\n timestamp(),\n printf((info: any) => {\n // console.log(info)\n\n const date = new Date(info.timestamp)\n const timeLabel = `${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`\n const fileNameLabel = info.fileName ? `[${info.fileName}]` : ''\n const stack = info.stack ? `\\n${info.stack}` : ''\n const value = getMetadataText(info.metadata)\n const traceId = info.trace_id\n ? `${String(info.trace_id).substring(0, 8)}@${String(info.span_id).substring(0, 8)}`\n : ''\n const context = `${info.context || ''} ${traceId}`.trim()\n\n return `[${info.level}] [${timeLabel}] [${context}] ${fileNameLabel} ${info.message} ${value} ${stack}`\n }),\n)\n\nexport const textConsoleTransport = new transports.Console({\n handleExceptions: true,\n format: textConsoleFormat,\n})\n\nexport const jsonConsoleFormat: any = combine(\n metadata({fillExcept: ['fileName', 'level', 'message']}),\n opentelemetryContext(),\n metaError(),\n timestamp(),\n json(),\n)\n\nexport const jsonConsoleTransport = new transports.Console({\n handleExceptions: true,\n format: jsonConsoleFormat,\n})\n","import winston, {createLogger as winstonCreateLogger, config, format} from 'winston'\nimport {jsonConsoleTransport, textConsoleTransport} from './formats'\nimport {getFileName} from './helpers/getFileName'\nimport {OrionLogger} from './types'\n\nconst transports: winston.transport[] = [\n process.env.NODE_ENV !== 'production' || process.env.ORION_DEV || process.env.JEST_WORKER_ID\n ? textConsoleTransport\n : jsonConsoleTransport,\n]\n\nexport const winstonLogger = winstonCreateLogger({\n levels: config.npm.levels,\n handleExceptions: true,\n format: format.errors({stack: true}),\n transports: transports,\n})\n\nexport const configureLogger = (options: winston.LoggerOptions) => {\n return winstonLogger.configure(options)\n}\n\nexport const setLogLevel = (level: string) => {\n return (winstonLogger.level = level)\n}\n\nexport const addTransport = (transport: winston.transport) => {\n return winstonLogger.add(transport)\n}\n\nexport const getLogger = (context: string) => {\n return winstonLogger.child({context})\n}\n\nconst createLogger = (logger: winston.Logger): OrionLogger => {\n return {\n debug: (message: string, value: any) => {\n const fileName = getFileName()\n return logger.debug({message, fileName, value})\n },\n info: (message: string, value: any) => {\n const fileName = getFileName()\n return logger.info({message, fileName, value})\n },\n warn: (message: string, value: any) => {\n const fileName = getFileName()\n return logger.warn({message, fileName, value})\n },\n error: (message: string, value: any) => {\n const fileName = getFileName()\n return logger.error({message, fileName, value})\n },\n addContext: (module: NodeJS.Module) => {\n if (module.id) {\n const split = String(module.id).split('.orion/build/')\n const fileName = split.length > 1 ? split[1] : split[0]\n return createLogger(logger.child({fileName}))\n }\n return createLogger(logger.child({}))\n },\n addMetadata: (metadata: any) => {\n return createLogger(logger.child(metadata))\n },\n }\n}\n\nexport const logger = createLogger(winstonLogger)\n","export const getFileName = () => {\n try {\n const stack = new Error().stack\n const lines = stack.split('\\n')\n const filePath = lines[3].split('(')[1].split(')')[0]\n return improveFileName(filePath)\n } catch (error) {\n return\n }\n}\n\nexport const improveFileName = (path: string) => {\n if (path.includes('orionjs/packages')) {\n return path.replace(/^.+\\/orionjs\\/packages\\//, '@orion-js/')\n }\n\n if (path.includes('.orion/build')) {\n return path.replace(/^.+\\.orion\\/build\\//, '')\n }\n\n if (path.includes('/node_modules/@')) {\n const after = path.split('/node_modules/')[1]\n const parts = after.split('/')\n return `${parts[0]}/${parts[1]}`\n }\n\n if (path.includes('/node_modules/')) {\n const after = path.split('/node_modules/')[1]\n const parts = after.split('/')\n return `${parts[0]}`\n }\n\n return path\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,iCAAAA;AAAA,EAAA;AAAA;AAAA;AAAA,IAAAC,kBAAoB;;;ACApB,qBAAiC;AACjC,uBAAiB;AACjB,oBAAsB;AACtB,iBAAkC;AAElC,IAAM,EAAC,UAAU,WAAW,MAAM,UAAU,SAAS,OAAM,IAAI;AAE/D,IAAM,2BAAuB,uBAAO,UAAQ;AAC1C,QAAM,aAAqC,WAAAC,QAAc,MAAM,cAAc;AAC7E,MAAI,YAAY;AACd,UAAM,aAAa,WAAW,YAAY;AAC1C,QAAI,WAAW,QAAQ,CAAC,KAAK,SAAS;AACpC,WAAK,UAAU,WAAW;AAAA,IAC5B;AACA,UAAM,SAAS;AAAA,MACb,UAAU,WAAW;AAAA,MACrB,SAAS,WAAW;AAAA,MACpB,aAAa,IAAI,WAAW,WAAW,SAAS,EAAE,CAAC;AAAA,IACrD;AACA,WAAO,OAAO,MAAM,MAAM;AAAA,EAC5B;AACA,SAAO;AACT,CAAC;AAED,IAAM,gBAAY,uBAAO,CAAC,SAAc;AAxBxC;AAyBE,QAAI,wCAAM,aAAN,mBAAgB,UAAhB,mBAAuB,kBAAiB,OAAO;AACjD,SAAK,SAAQ,wCAAM,aAAN,mBAAgB,UAAhB,mBAAuB,MAAM;AAC1C,SAAK,gBAAe,wCAAM,aAAN,mBAAgB,UAAhB,mBAAuB,MAAM;AACjD,WAAO,kCAAM,aAAN,mBAAgB,UAAvB,wBAA8B;AAAA,EAChC;AAEA,QAAI,kCAAM,aAAN,mBAAgB,kBAAiB,OAAO;AAC1C,SAAK,SAAQ,kCAAM,aAAN,mBAAgB,MAAM;AACnC,SAAK,gBAAe,kCAAM,aAAN,mBAAgB,MAAM;AAC1C,UAAO,6BAAM,aAAb,wBAAuB;AAAA,EACzB;AAEA,SAAO;AACT,CAAC;AAEM,IAAM,mBAAoB,uBAAO,UAAQ;AAC9C,QAAM,EAAC,MAAM,OAAO,GAAG,MAAK,IAAI;AAChC,SAAO;AAAA,IACL,GAAG;AAAA,IACH,MAAM;AAAA,MACJ,MAAM,QAAQ;AAAA,MACd,YAAY;AAAA,IACd;AAAA,EACF;AACF,CAAC;AAED,SAAS,gBAAgBC,WAAe;AACtC,QAAM,EAAC,OAAO,GAAG,KAAI,IAAIA;AACzB,UAAI,uBAAQ,IAAI,GAAG;AACjB,QAAI,OAAO,UAAU,YAAa,QAAO;AACzC,WAAO,iBAAAC,QAAK,QAAQ,KAAK;AAAA,EAC3B;AACA,SAAO,GAAG,iBAAAA,QAAK,QAAQ,KAAK,CAAC,IAAI,iBAAAA,QAAK,QAAQ,IAAI,CAAC;AACrD;AAEO,IAAM,oBAAyB;AAAA,EACpC,SAAS;AAAA,EACT,SAAS,EAAC,YAAY,CAAC,YAAY,SAAS,WAAW,OAAO,EAAC,CAAC;AAAA,EAChE,qBAAqB;AAAA,EACrB,UAAU;AAAA,EACV,UAAU;AAAA,EACV,OAAO,CAAC,SAAc;AAGpB,UAAM,OAAO,IAAI,KAAK,KAAK,SAAS;AACpC,UAAM,YAAY,GAAG,KAAK,SAAS,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,KAAK,WAAW,CAAC;AAC9E,UAAM,gBAAgB,KAAK,WAAW,IAAI,KAAK,QAAQ,MAAM;AAC7D,UAAM,QAAQ,KAAK,QAAQ;AAAA,EAAK,KAAK,KAAK,KAAK;AAC/C,UAAM,QAAQ,gBAAgB,KAAK,QAAQ;AAC3C,UAAM,UAAU,KAAK,WACjB,GAAG,OAAO,KAAK,QAAQ,EAAE,UAAU,GAAG,CAAC,CAAC,IAAI,OAAO,KAAK,OAAO,EAAE,UAAU,GAAG,CAAC,CAAC,KAChF;AACJ,UAAM,UAAU,GAAG,KAAK,WAAW,EAAE,IAAI,OAAO,GAAG,KAAK;AAExD,WAAO,IAAI,KAAK,KAAK,MAAM,SAAS,MAAM,OAAO,KAAK,aAAa,IAAI,KAAK,OAAO,IAAI,KAAK,IAAI,KAAK;AAAA,EACvG,CAAC;AACH;AAEO,IAAM,uBAAuB,IAAI,0BAAW,QAAQ;AAAA,EACzD,kBAAkB;AAAA,EAClB,QAAQ;AACV,CAAC;AAEM,IAAM,oBAAyB;AAAA,EACpC,SAAS,EAAC,YAAY,CAAC,YAAY,SAAS,SAAS,EAAC,CAAC;AAAA,EACvD,qBAAqB;AAAA,EACrB,UAAU;AAAA,EACV,UAAU;AAAA,EACV,KAAK;AACP;AAEO,IAAM,uBAAuB,IAAI,0BAAW,QAAQ;AAAA,EACzD,kBAAkB;AAAA,EAClB,QAAQ;AACV,CAAC;;;ACnGD,IAAAC,kBAA2E;;;ACApE,IAAM,cAAc,MAAM;AAC/B,MAAI;AACF,UAAM,QAAQ,IAAI,MAAM,EAAE;AAC1B,UAAM,QAAQ,MAAM,MAAM,IAAI;AAC9B,UAAM,WAAW,MAAM,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC;AACpD,WAAO,gBAAgB,QAAQ;AAAA,EACjC,SAAS,OAAO;AACd;AAAA,EACF;AACF;AAEO,IAAM,kBAAkB,CAAC,SAAiB;AAC/C,MAAI,KAAK,SAAS,kBAAkB,GAAG;AACrC,WAAO,KAAK,QAAQ,4BAA4B,YAAY;AAAA,EAC9D;AAEA,MAAI,KAAK,SAAS,cAAc,GAAG;AACjC,WAAO,KAAK,QAAQ,uBAAuB,EAAE;AAAA,EAC/C;AAEA,MAAI,KAAK,SAAS,iBAAiB,GAAG;AACpC,UAAM,QAAQ,KAAK,MAAM,gBAAgB,EAAE,CAAC;AAC5C,UAAM,QAAQ,MAAM,MAAM,GAAG;AAC7B,WAAO,GAAG,MAAM,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;AAAA,EAChC;AAEA,MAAI,KAAK,SAAS,gBAAgB,GAAG;AACnC,UAAM,QAAQ,KAAK,MAAM,gBAAgB,EAAE,CAAC;AAC5C,UAAM,QAAQ,MAAM,MAAM,GAAG;AAC7B,WAAO,GAAG,MAAM,CAAC,CAAC;AAAA,EACpB;AAEA,SAAO;AACT;;;AD5BA,IAAMC,cAAkC;AAAA,EACtC,QAAQ,IAAI,aAAa,gBAAgB,QAAQ,IAAI,aAAa,QAAQ,IAAI,iBAC1E,uBACA;AACN;AAEO,IAAM,oBAAgB,gBAAAC,cAAoB;AAAA,EAC/C,QAAQ,uBAAO,IAAI;AAAA,EACnB,kBAAkB;AAAA,EAClB,QAAQ,uBAAO,OAAO,EAAC,OAAO,KAAI,CAAC;AAAA,EACnC,YAAYD;AACd,CAAC;AAEM,IAAM,kBAAkB,CAAC,YAAmC;AACjE,SAAO,cAAc,UAAU,OAAO;AACxC;AAEO,IAAM,cAAc,CAAC,UAAkB;AAC5C,SAAQ,cAAc,QAAQ;AAChC;AAEO,IAAM,eAAe,CAAC,cAAiC;AAC5D,SAAO,cAAc,IAAI,SAAS;AACpC;AAEO,IAAM,YAAY,CAAC,YAAoB;AAC5C,SAAO,cAAc,MAAM,EAAC,QAAO,CAAC;AACtC;AAEA,IAAM,eAAe,CAACE,YAAwC;AAC5D,SAAO;AAAA,IACL,OAAO,CAAC,SAAiB,UAAe;AACtC,YAAM,WAAW,YAAY;AAC7B,aAAOA,QAAO,MAAM,EAAC,SAAS,UAAU,MAAK,CAAC;AAAA,IAChD;AAAA,IACA,MAAM,CAAC,SAAiB,UAAe;AACrC,YAAM,WAAW,YAAY;AAC7B,aAAOA,QAAO,KAAK,EAAC,SAAS,UAAU,MAAK,CAAC;AAAA,IAC/C;AAAA,IACA,MAAM,CAAC,SAAiB,UAAe;AACrC,YAAM,WAAW,YAAY;AAC7B,aAAOA,QAAO,KAAK,EAAC,SAAS,UAAU,MAAK,CAAC;AAAA,IAC/C;AAAA,IACA,OAAO,CAAC,SAAiB,UAAe;AACtC,YAAM,WAAW,YAAY;AAC7B,aAAOA,QAAO,MAAM,EAAC,SAAS,UAAU,MAAK,CAAC;AAAA,IAChD;AAAA,IACA,YAAY,CAACC,YAA0B;AACrC,UAAIA,QAAO,IAAI;AACb,cAAM,QAAQ,OAAOA,QAAO,EAAE,EAAE,MAAM,eAAe;AACrD,cAAM,WAAW,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,MAAM,CAAC;AACtD,eAAO,aAAaD,QAAO,MAAM,EAAC,SAAQ,CAAC,CAAC;AAAA,MAC9C;AACA,aAAO,aAAaA,QAAO,MAAM,CAAC,CAAC,CAAC;AAAA,IACtC;AAAA,IACA,aAAa,CAACE,cAAkB;AAC9B,aAAO,aAAaF,QAAO,MAAME,SAAQ,CAAC;AAAA,IAC5C;AAAA,EACF;AACF;AAEO,IAAM,SAAS,aAAa,aAAa;","names":["winston","import_winston","opentelemetry","metadata","util","import_winston","transports","winstonCreateLogger","logger","module","metadata"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import winston, { transports } from 'winston';
|
|
2
2
|
export { default as winston } from 'winston';
|
|
3
|
-
import * as logform from 'logform';
|
|
4
3
|
|
|
5
|
-
declare const sentryFormat:
|
|
6
|
-
declare const textConsoleFormat:
|
|
4
|
+
declare const sentryFormat: any;
|
|
5
|
+
declare const textConsoleFormat: any;
|
|
7
6
|
declare const textConsoleTransport: transports.ConsoleTransportInstance;
|
|
8
|
-
declare const jsonConsoleFormat:
|
|
7
|
+
declare const jsonConsoleFormat: any;
|
|
9
8
|
declare const jsonConsoleTransport: transports.ConsoleTransportInstance;
|
|
10
9
|
|
|
11
10
|
type LogFunction = (message: string, metadata?: any) => void;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import winston, { transports } from 'winston';
|
|
2
2
|
export { default as winston } from 'winston';
|
|
3
|
-
import * as logform from 'logform';
|
|
4
3
|
|
|
5
|
-
declare const sentryFormat:
|
|
6
|
-
declare const textConsoleFormat:
|
|
4
|
+
declare const sentryFormat: any;
|
|
5
|
+
declare const textConsoleFormat: any;
|
|
7
6
|
declare const textConsoleTransport: transports.ConsoleTransportInstance;
|
|
8
|
-
declare const jsonConsoleFormat:
|
|
7
|
+
declare const jsonConsoleFormat: any;
|
|
9
8
|
declare const jsonConsoleTransport: transports.ConsoleTransportInstance;
|
|
10
9
|
|
|
11
10
|
type LogFunction = (message: string, metadata?: any) => void;
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
-
|
|
4
1
|
// src/index.ts
|
|
5
|
-
import
|
|
2
|
+
import winston2 from "winston";
|
|
6
3
|
|
|
7
4
|
// src/formats.ts
|
|
8
5
|
import { format, transports } from "winston";
|
|
@@ -58,36 +55,35 @@ function getMetadataText(metadata2) {
|
|
|
58
55
|
}
|
|
59
56
|
return `${util.inspect(value)} ${util.inspect(rest)}`;
|
|
60
57
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
fillExcept: [
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
const fileNameLabel = info.fileName ? `[${info.fileName}]` : "";
|
|
73
|
-
const stack = info.stack ? `
|
|
58
|
+
var textConsoleFormat = combine(
|
|
59
|
+
colorize(),
|
|
60
|
+
metadata({ fillExcept: ["fileName", "level", "message", "stack"] }),
|
|
61
|
+
opentelemetryContext(),
|
|
62
|
+
metaError(),
|
|
63
|
+
timestamp(),
|
|
64
|
+
printf((info) => {
|
|
65
|
+
const date = new Date(info.timestamp);
|
|
66
|
+
const timeLabel = `${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`;
|
|
67
|
+
const fileNameLabel = info.fileName ? `[${info.fileName}]` : "";
|
|
68
|
+
const stack = info.stack ? `
|
|
74
69
|
${info.stack}` : "";
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
})
|
|
70
|
+
const value = getMetadataText(info.metadata);
|
|
71
|
+
const traceId = info.trace_id ? `${String(info.trace_id).substring(0, 8)}@${String(info.span_id).substring(0, 8)}` : "";
|
|
72
|
+
const context = `${info.context || ""} ${traceId}`.trim();
|
|
73
|
+
return `[${info.level}] [${timeLabel}] [${context}] ${fileNameLabel} ${info.message} ${value} ${stack}`;
|
|
74
|
+
})
|
|
75
|
+
);
|
|
80
76
|
var textConsoleTransport = new transports.Console({
|
|
81
77
|
handleExceptions: true,
|
|
82
78
|
format: textConsoleFormat
|
|
83
79
|
});
|
|
84
|
-
var jsonConsoleFormat = combine(
|
|
85
|
-
fillExcept: [
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
80
|
+
var jsonConsoleFormat = combine(
|
|
81
|
+
metadata({ fillExcept: ["fileName", "level", "message"] }),
|
|
82
|
+
opentelemetryContext(),
|
|
83
|
+
metaError(),
|
|
84
|
+
timestamp(),
|
|
85
|
+
json()
|
|
86
|
+
);
|
|
91
87
|
var jsonConsoleTransport = new transports.Console({
|
|
92
88
|
handleExceptions: true,
|
|
93
89
|
format: jsonConsoleFormat
|
|
@@ -97,7 +93,7 @@ var jsonConsoleTransport = new transports.Console({
|
|
|
97
93
|
import { createLogger as winstonCreateLogger, config, format as format2 } from "winston";
|
|
98
94
|
|
|
99
95
|
// src/helpers/getFileName.ts
|
|
100
|
-
var getFileName =
|
|
96
|
+
var getFileName = () => {
|
|
101
97
|
try {
|
|
102
98
|
const stack = new Error().stack;
|
|
103
99
|
const lines = stack.split("\n");
|
|
@@ -106,8 +102,8 @@ var getFileName = /* @__PURE__ */ __name(() => {
|
|
|
106
102
|
} catch (error) {
|
|
107
103
|
return;
|
|
108
104
|
}
|
|
109
|
-
}
|
|
110
|
-
var improveFileName =
|
|
105
|
+
};
|
|
106
|
+
var improveFileName = (path) => {
|
|
111
107
|
if (path.includes("orionjs/packages")) {
|
|
112
108
|
return path.replace(/^.+\/orionjs\/packages\//, "@orion-js/");
|
|
113
109
|
}
|
|
@@ -125,7 +121,7 @@ var improveFileName = /* @__PURE__ */ __name((path) => {
|
|
|
125
121
|
return `${parts[0]}`;
|
|
126
122
|
}
|
|
127
123
|
return path;
|
|
128
|
-
}
|
|
124
|
+
};
|
|
129
125
|
|
|
130
126
|
// src/logger.ts
|
|
131
127
|
var transports2 = [
|
|
@@ -134,74 +130,52 @@ var transports2 = [
|
|
|
134
130
|
var winstonLogger = winstonCreateLogger({
|
|
135
131
|
levels: config.npm.levels,
|
|
136
132
|
handleExceptions: true,
|
|
137
|
-
format: format2.errors({
|
|
138
|
-
stack: true
|
|
139
|
-
}),
|
|
133
|
+
format: format2.errors({ stack: true }),
|
|
140
134
|
transports: transports2
|
|
141
135
|
});
|
|
142
|
-
var configureLogger =
|
|
136
|
+
var configureLogger = (options) => {
|
|
143
137
|
return winstonLogger.configure(options);
|
|
144
|
-
}
|
|
145
|
-
var setLogLevel =
|
|
138
|
+
};
|
|
139
|
+
var setLogLevel = (level) => {
|
|
146
140
|
return winstonLogger.level = level;
|
|
147
|
-
}
|
|
148
|
-
var addTransport =
|
|
141
|
+
};
|
|
142
|
+
var addTransport = (transport) => {
|
|
149
143
|
return winstonLogger.add(transport);
|
|
150
|
-
}
|
|
151
|
-
var getLogger =
|
|
152
|
-
return winstonLogger.child({
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
}, "getLogger");
|
|
156
|
-
var createLogger = /* @__PURE__ */ __name((logger2) => {
|
|
144
|
+
};
|
|
145
|
+
var getLogger = (context) => {
|
|
146
|
+
return winstonLogger.child({ context });
|
|
147
|
+
};
|
|
148
|
+
var createLogger = (logger2) => {
|
|
157
149
|
return {
|
|
158
|
-
debug:
|
|
150
|
+
debug: (message, value) => {
|
|
159
151
|
const fileName = getFileName();
|
|
160
|
-
return logger2.debug({
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
value
|
|
164
|
-
});
|
|
165
|
-
}, "debug"),
|
|
166
|
-
info: /* @__PURE__ */ __name((message, value) => {
|
|
152
|
+
return logger2.debug({ message, fileName, value });
|
|
153
|
+
},
|
|
154
|
+
info: (message, value) => {
|
|
167
155
|
const fileName = getFileName();
|
|
168
|
-
return logger2.info({
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
value
|
|
172
|
-
});
|
|
173
|
-
}, "info"),
|
|
174
|
-
warn: /* @__PURE__ */ __name((message, value) => {
|
|
156
|
+
return logger2.info({ message, fileName, value });
|
|
157
|
+
},
|
|
158
|
+
warn: (message, value) => {
|
|
175
159
|
const fileName = getFileName();
|
|
176
|
-
return logger2.warn({
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
value
|
|
180
|
-
});
|
|
181
|
-
}, "warn"),
|
|
182
|
-
error: /* @__PURE__ */ __name((message, value) => {
|
|
160
|
+
return logger2.warn({ message, fileName, value });
|
|
161
|
+
},
|
|
162
|
+
error: (message, value) => {
|
|
183
163
|
const fileName = getFileName();
|
|
184
|
-
return logger2.error({
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
value
|
|
188
|
-
});
|
|
189
|
-
}, "error"),
|
|
190
|
-
addContext: /* @__PURE__ */ __name((module) => {
|
|
164
|
+
return logger2.error({ message, fileName, value });
|
|
165
|
+
},
|
|
166
|
+
addContext: (module) => {
|
|
191
167
|
if (module.id) {
|
|
192
168
|
const split = String(module.id).split(".orion/build/");
|
|
193
169
|
const fileName = split.length > 1 ? split[1] : split[0];
|
|
194
|
-
return createLogger(logger2.child({
|
|
195
|
-
fileName
|
|
196
|
-
}));
|
|
170
|
+
return createLogger(logger2.child({ fileName }));
|
|
197
171
|
}
|
|
198
172
|
return createLogger(logger2.child({}));
|
|
199
|
-
},
|
|
200
|
-
addMetadata:
|
|
173
|
+
},
|
|
174
|
+
addMetadata: (metadata2) => {
|
|
201
175
|
return createLogger(logger2.child(metadata2));
|
|
202
|
-
}
|
|
176
|
+
}
|
|
203
177
|
};
|
|
204
|
-
}
|
|
178
|
+
};
|
|
205
179
|
var logger = createLogger(winstonLogger);
|
|
206
180
|
export {
|
|
207
181
|
addTransport,
|
|
@@ -214,7 +188,7 @@ export {
|
|
|
214
188
|
setLogLevel,
|
|
215
189
|
textConsoleFormat,
|
|
216
190
|
textConsoleTransport,
|
|
217
|
-
winston,
|
|
191
|
+
winston2 as winston,
|
|
218
192
|
winstonLogger
|
|
219
193
|
};
|
|
220
194
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/formats.ts","../src/logger.ts","../src/helpers/getFileName.ts"],"sourcesContent":["import winston from 'winston'\n\nexport * from './formats'\nexport * from './logger'\nexport * from './types'\n\nexport {winston}\n","import {format, transports} from 'winston'\nimport util from 'node:util'\nimport {isEmpty} from 'lodash'\nimport opentelemetry, {Span} from '@opentelemetry/api'\n\nconst {metadata, timestamp, json, colorize, combine, printf} = format\n\nconst opentelemetryContext = format(info => {\n const activeSpan: Span & {name?: string} = opentelemetry.trace.getActiveSpan()\n if (activeSpan) {\n const spanContex = activeSpan.spanContext()\n if (activeSpan.name && !info.context) {\n info.context = activeSpan.name\n }\n const fields = {\n trace_id: spanContex.traceId,\n span_id: spanContex.spanId,\n trace_flags: `0${spanContex.traceFlags.toString(16)}`,\n }\n Object.assign(info, fields)\n }\n return info\n})\n\nconst metaError = format((info: any) => {\n if (info?.metadata?.value?.error instanceof Error) {\n info.stack = info?.metadata?.value?.error.stack\n info.errorMessage = info?.metadata?.value?.error.message\n delete info?.metadata?.value?.error\n }\n\n if (info?.metadata?.value instanceof Error) {\n info.stack = info?.metadata?.value.stack\n info.errorMessage = info?.metadata?.value.message\n delete info?.metadata?.value\n }\n\n return info\n})\n\nexport const sentryFormat = format(info => {\n const {path, label, ...extra} = info\n return {\n ...extra,\n tags: {\n path: path || '',\n request_id: label,\n },\n }\n})\n\nfunction getMetadataText(metadata: any) {\n const {value, ...rest} = metadata\n if (isEmpty(rest)) {\n if (typeof value === 'undefined') return ''\n return util.inspect(value)\n }\n return `${util.inspect(value)} ${util.inspect(rest)}`\n}\n\nexport const textConsoleFormat = combine(\n colorize(),\n metadata({fillExcept: ['fileName', 'level', 'message', 'stack']}),\n opentelemetryContext(),\n metaError(),\n timestamp(),\n printf((info: any) => {\n // console.log(info)\n\n const date = new Date(info.timestamp)\n const timeLabel = `${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`\n const fileNameLabel = info.fileName ? `[${info.fileName}]` : ''\n const stack = info.stack ? `\\n${info.stack}` : ''\n const value = getMetadataText(info.metadata)\n const traceId = info.trace_id\n ? `${String(info.trace_id).substring(0, 8)}@${String(info.span_id).substring(0, 8)}`\n : ''\n const context = `${info.context || ''} ${traceId}`.trim()\n\n return `[${info.level}] [${timeLabel}] [${context}] ${fileNameLabel} ${info.message} ${value} ${stack}`\n }),\n)\n\nexport const textConsoleTransport = new transports.Console({\n handleExceptions: true,\n format: textConsoleFormat,\n})\n\nexport const jsonConsoleFormat = combine(\n metadata({fillExcept: ['fileName', 'level', 'message']}),\n opentelemetryContext(),\n metaError(),\n timestamp(),\n json(),\n)\n\nexport const jsonConsoleTransport = new transports.Console({\n handleExceptions: true,\n format: jsonConsoleFormat,\n})\n","import winston, {createLogger as winstonCreateLogger, config, format} from 'winston'\nimport {jsonConsoleTransport, textConsoleTransport} from './formats'\nimport {getFileName} from './helpers/getFileName'\nimport {OrionLogger} from './types'\n\nconst transports: winston.transport[] = [\n (process.env.NODE_ENV !== 'production' || process.env.ORION_DEV || process.env.JEST_WORKER_ID) ? textConsoleTransport : jsonConsoleTransport\n]\n\nexport const winstonLogger = winstonCreateLogger({\n levels: config.npm.levels,\n handleExceptions: true,\n format: format.errors({stack: true}),\n transports: transports\n})\n\nexport const configureLogger = (options: winston.LoggerOptions) => {\n return winstonLogger.configure(options)\n}\n\nexport const setLogLevel = (level: string) => {\n return (winstonLogger.level = level)\n}\n\nexport const addTransport = (transport: winston.transport) => {\n return winstonLogger.add(transport)\n}\n\nexport const getLogger = (context: string) => {\n return winstonLogger.child({context})\n}\n\nconst createLogger = (logger: winston.Logger): OrionLogger => {\n return {\n debug: (message: string, value: any) => {\n const fileName = getFileName()\n return logger.debug({message, fileName, value})\n },\n info: (message: string, value: any) => {\n const fileName = getFileName()\n return logger.info({message, fileName, value})\n },\n warn: (message: string, value: any) => {\n const fileName = getFileName()\n return logger.warn({message, fileName, value})\n },\n error: (message: string, value: any) => {\n const fileName = getFileName()\n return logger.error({message, fileName, value})\n },\n addContext: (module: NodeJS.Module) => {\n if (module.id) {\n const split = String(module.id).split('.orion/build/')\n const fileName = split.length > 1 ? split[1] : split[0]\n return createLogger(logger.child({fileName}))\n }\n return createLogger(logger.child({}))\n },\n addMetadata: (metadata: any) => {\n return createLogger(logger.child(metadata))\n }\n }\n}\n\nexport const logger = createLogger(winstonLogger)\n","export const getFileName = () => {\n try {\n const stack = new Error().stack\n const lines = stack.split('\\n')\n const filePath = lines[3].split('(')[1].split(')')[0]\n return improveFileName(filePath)\n } catch (error) {\n return\n }\n}\n\nexport const improveFileName = (path: string) => {\n if (path.includes('orionjs/packages')) {\n return path.replace(/^.+\\/orionjs\\/packages\\//, '@orion-js/')\n }\n\n if (path.includes('.orion/build')) {\n return path.replace(/^.+\\.orion\\/build\\//, '')\n }\n\n if (path.includes('/node_modules/@')) {\n const after = path.split('/node_modules/')[1]\n const parts = after.split('/')\n return `${parts[0]}/${parts[1]}`\n }\n\n if (path.includes('/node_modules/')) {\n const after = path.split('/node_modules/')[1]\n const parts = after.split('/')\n return `${parts[0]}`\n }\n\n return path\n}\n"],"mappings":"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","names":["winston","format","transports","util","isEmpty","opentelemetry","metadata","timestamp","json","colorize","combine","printf","format","opentelemetryContext","info","activeSpan","opentelemetry","trace","getActiveSpan","spanContex","spanContext","name","context","fields","trace_id","traceId","span_id","spanId","trace_flags","traceFlags","toString","Object","assign","metaError","value","error","Error","stack","errorMessage","message","sentryFormat","path","label","extra","tags","request_id","getMetadataText","rest","isEmpty","util","inspect","textConsoleFormat","fillExcept","date","Date","timeLabel","getHours","getMinutes","getSeconds","fileNameLabel","fileName","String","substring","trim","level","textConsoleTransport","transports","Console","handleExceptions","jsonConsoleFormat","jsonConsoleTransport","createLogger","winstonCreateLogger","config","format","getFileName","stack","Error","lines","split","filePath","improveFileName","error","path","includes","replace","after","parts","transports","process","env","NODE_ENV","ORION_DEV","JEST_WORKER_ID","textConsoleTransport","jsonConsoleTransport","winstonLogger","winstonCreateLogger","levels","config","npm","handleExceptions","format","errors","stack","configureLogger","options","configure","setLogLevel","level","addTransport","transport","add","getLogger","context","child","createLogger","logger","debug","message","value","fileName","getFileName","info","warn","error","addContext","module","id","split","String","length","addMetadata","metadata"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/formats.ts","../src/logger.ts","../src/helpers/getFileName.ts"],"sourcesContent":["import winston from 'winston'\n\nexport * from './formats'\nexport * from './logger'\nexport * from './types'\n\nexport {winston}\n","import {format, transports} from 'winston'\nimport util from 'node:util'\nimport {isEmpty} from 'lodash'\nimport opentelemetry, {Span} from '@opentelemetry/api'\n\nconst {metadata, timestamp, json, colorize, combine, printf} = format\n\nconst opentelemetryContext = format(info => {\n const activeSpan: Span & {name?: string} = opentelemetry.trace.getActiveSpan()\n if (activeSpan) {\n const spanContex = activeSpan.spanContext()\n if (activeSpan.name && !info.context) {\n info.context = activeSpan.name\n }\n const fields = {\n trace_id: spanContex.traceId,\n span_id: spanContex.spanId,\n trace_flags: `0${spanContex.traceFlags.toString(16)}`,\n }\n Object.assign(info, fields)\n }\n return info\n})\n\nconst metaError = format((info: any) => {\n if (info?.metadata?.value?.error instanceof Error) {\n info.stack = info?.metadata?.value?.error.stack\n info.errorMessage = info?.metadata?.value?.error.message\n delete info?.metadata?.value?.error\n }\n\n if (info?.metadata?.value instanceof Error) {\n info.stack = info?.metadata?.value.stack\n info.errorMessage = info?.metadata?.value.message\n delete info?.metadata?.value\n }\n\n return info\n})\n\nexport const sentryFormat: any = format(info => {\n const {path, label, ...extra} = info\n return {\n ...extra,\n tags: {\n path: path || '',\n request_id: label,\n },\n }\n})\n\nfunction getMetadataText(metadata: any) {\n const {value, ...rest} = metadata\n if (isEmpty(rest)) {\n if (typeof value === 'undefined') return ''\n return util.inspect(value)\n }\n return `${util.inspect(value)} ${util.inspect(rest)}`\n}\n\nexport const textConsoleFormat: any = combine(\n colorize(),\n metadata({fillExcept: ['fileName', 'level', 'message', 'stack']}),\n opentelemetryContext(),\n metaError(),\n timestamp(),\n printf((info: any) => {\n // console.log(info)\n\n const date = new Date(info.timestamp)\n const timeLabel = `${date.getHours()}:${date.getMinutes()}:${date.getSeconds()}`\n const fileNameLabel = info.fileName ? `[${info.fileName}]` : ''\n const stack = info.stack ? `\\n${info.stack}` : ''\n const value = getMetadataText(info.metadata)\n const traceId = info.trace_id\n ? `${String(info.trace_id).substring(0, 8)}@${String(info.span_id).substring(0, 8)}`\n : ''\n const context = `${info.context || ''} ${traceId}`.trim()\n\n return `[${info.level}] [${timeLabel}] [${context}] ${fileNameLabel} ${info.message} ${value} ${stack}`\n }),\n)\n\nexport const textConsoleTransport = new transports.Console({\n handleExceptions: true,\n format: textConsoleFormat,\n})\n\nexport const jsonConsoleFormat: any = combine(\n metadata({fillExcept: ['fileName', 'level', 'message']}),\n opentelemetryContext(),\n metaError(),\n timestamp(),\n json(),\n)\n\nexport const jsonConsoleTransport = new transports.Console({\n handleExceptions: true,\n format: jsonConsoleFormat,\n})\n","import winston, {createLogger as winstonCreateLogger, config, format} from 'winston'\nimport {jsonConsoleTransport, textConsoleTransport} from './formats'\nimport {getFileName} from './helpers/getFileName'\nimport {OrionLogger} from './types'\n\nconst transports: winston.transport[] = [\n process.env.NODE_ENV !== 'production' || process.env.ORION_DEV || process.env.JEST_WORKER_ID\n ? textConsoleTransport\n : jsonConsoleTransport,\n]\n\nexport const winstonLogger = winstonCreateLogger({\n levels: config.npm.levels,\n handleExceptions: true,\n format: format.errors({stack: true}),\n transports: transports,\n})\n\nexport const configureLogger = (options: winston.LoggerOptions) => {\n return winstonLogger.configure(options)\n}\n\nexport const setLogLevel = (level: string) => {\n return (winstonLogger.level = level)\n}\n\nexport const addTransport = (transport: winston.transport) => {\n return winstonLogger.add(transport)\n}\n\nexport const getLogger = (context: string) => {\n return winstonLogger.child({context})\n}\n\nconst createLogger = (logger: winston.Logger): OrionLogger => {\n return {\n debug: (message: string, value: any) => {\n const fileName = getFileName()\n return logger.debug({message, fileName, value})\n },\n info: (message: string, value: any) => {\n const fileName = getFileName()\n return logger.info({message, fileName, value})\n },\n warn: (message: string, value: any) => {\n const fileName = getFileName()\n return logger.warn({message, fileName, value})\n },\n error: (message: string, value: any) => {\n const fileName = getFileName()\n return logger.error({message, fileName, value})\n },\n addContext: (module: NodeJS.Module) => {\n if (module.id) {\n const split = String(module.id).split('.orion/build/')\n const fileName = split.length > 1 ? split[1] : split[0]\n return createLogger(logger.child({fileName}))\n }\n return createLogger(logger.child({}))\n },\n addMetadata: (metadata: any) => {\n return createLogger(logger.child(metadata))\n },\n }\n}\n\nexport const logger = createLogger(winstonLogger)\n","export const getFileName = () => {\n try {\n const stack = new Error().stack\n const lines = stack.split('\\n')\n const filePath = lines[3].split('(')[1].split(')')[0]\n return improveFileName(filePath)\n } catch (error) {\n return\n }\n}\n\nexport const improveFileName = (path: string) => {\n if (path.includes('orionjs/packages')) {\n return path.replace(/^.+\\/orionjs\\/packages\\//, '@orion-js/')\n }\n\n if (path.includes('.orion/build')) {\n return path.replace(/^.+\\.orion\\/build\\//, '')\n }\n\n if (path.includes('/node_modules/@')) {\n const after = path.split('/node_modules/')[1]\n const parts = after.split('/')\n return `${parts[0]}/${parts[1]}`\n }\n\n if (path.includes('/node_modules/')) {\n const after = path.split('/node_modules/')[1]\n const parts = after.split('/')\n return `${parts[0]}`\n }\n\n return path\n}\n"],"mappings":"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","names":["winston","metadata","format","transports","format","logger","metadata"]}
|