logiscout 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/api/Interceptor.cjs +15 -0
- package/dist/cjs/api/Interceptor.d.ts +4 -0
- package/dist/cjs/api/Interceptor.d.ts.map +1 -0
- package/dist/cjs/api/LogApi.cjs +16 -0
- package/dist/cjs/api/LogApi.d.ts +6 -0
- package/dist/cjs/api/LogApi.d.ts.map +1 -0
- package/dist/cjs/core/context/RequestContext.cjs +17 -0
- package/dist/cjs/core/context/RequestContext.d.ts +8 -0
- package/dist/cjs/core/context/RequestContext.d.ts.map +1 -0
- package/dist/cjs/core/enum/LogLevels.cjs +11 -0
- package/dist/cjs/core/enum/LogLevels.d.ts +8 -0
- package/dist/cjs/core/enum/LogLevels.d.ts.map +1 -0
- package/dist/cjs/core/interface/LoggerInterface.cjs +2 -0
- package/dist/cjs/core/interface/LoggerInterface.d.ts +7 -0
- package/dist/cjs/core/interface/LoggerInterface.d.ts.map +1 -0
- package/dist/cjs/core/types/LogContext.cjs +2 -0
- package/dist/cjs/core/types/LogContext.d.ts +5 -0
- package/dist/cjs/core/types/LogContext.d.ts.map +1 -0
- package/dist/cjs/core/types/LogEntry.cjs +2 -0
- package/dist/cjs/core/types/LogEntry.d.ts +9 -0
- package/dist/cjs/core/types/LogEntry.d.ts.map +1 -0
- package/dist/cjs/index.cjs +16 -0
- package/dist/cjs/index.d.ts +9 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/middlewares/correlationMiddleware.cjs +20 -0
- package/dist/cjs/middlewares/correlationMiddleware.d.ts +2 -0
- package/dist/cjs/middlewares/correlationMiddleware.d.ts.map +1 -0
- package/dist/cjs/services/Levels/Levels.cjs +24 -0
- package/dist/cjs/services/Levels/Levels.d.ts +9 -0
- package/dist/cjs/services/Levels/Levels.d.ts.map +1 -0
- package/dist/cjs/services/Logger/Logger.cjs +101 -0
- package/dist/cjs/services/Logger/Logger.d.ts +12 -0
- package/dist/cjs/services/Logger/Logger.d.ts.map +1 -0
- package/dist/esm/api/Interceptor.d.ts +4 -0
- package/dist/esm/api/Interceptor.d.ts.map +1 -0
- package/dist/esm/api/Interceptor.js +10 -0
- package/dist/esm/api/LogApi.d.ts +6 -0
- package/dist/esm/api/LogApi.d.ts.map +1 -0
- package/dist/esm/api/LogApi.js +10 -0
- package/dist/esm/core/context/RequestContext.d.ts +8 -0
- package/dist/esm/core/context/RequestContext.d.ts.map +1 -0
- package/dist/esm/core/context/RequestContext.js +13 -0
- package/dist/esm/core/enum/LogLevels.d.ts +8 -0
- package/dist/esm/core/enum/LogLevels.d.ts.map +1 -0
- package/dist/esm/core/enum/LogLevels.js +8 -0
- package/dist/esm/core/interface/LoggerInterface.d.ts +7 -0
- package/dist/esm/core/interface/LoggerInterface.d.ts.map +1 -0
- package/dist/esm/core/interface/LoggerInterface.js +1 -0
- package/dist/esm/core/types/LogContext.d.ts +5 -0
- package/dist/esm/core/types/LogContext.d.ts.map +1 -0
- package/dist/esm/core/types/LogContext.js +1 -0
- package/dist/esm/core/types/LogEntry.d.ts +9 -0
- package/dist/esm/core/types/LogEntry.d.ts.map +1 -0
- package/dist/esm/core/types/LogEntry.js +1 -0
- package/dist/esm/index.d.ts +9 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +8 -0
- package/dist/esm/middlewares/correlationMiddleware.d.ts +2 -0
- package/dist/esm/middlewares/correlationMiddleware.d.ts.map +1 -0
- package/dist/esm/middlewares/correlationMiddleware.js +13 -0
- package/dist/esm/services/Levels/Levels.d.ts +9 -0
- package/dist/esm/services/Levels/Levels.d.ts.map +1 -0
- package/dist/esm/services/Levels/Levels.js +20 -0
- package/dist/esm/services/Logger/Logger.d.ts +12 -0
- package/dist/esm/services/Logger/Logger.d.ts.map +1 -0
- package/dist/esm/services/Logger/Logger.js +64 -0
- package/package.json +56 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const axios_1 = __importDefault(require("axios"));
|
|
7
|
+
const HTTP = axios_1.default.create({
|
|
8
|
+
baseURL: "http://127.0.0.1:3000/api/",
|
|
9
|
+
headers: {
|
|
10
|
+
"Content-Type": "application/json",
|
|
11
|
+
Accept: "application/json",
|
|
12
|
+
},
|
|
13
|
+
withCredentials: false,
|
|
14
|
+
});
|
|
15
|
+
exports.default = HTTP;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Interceptor.d.ts","sourceRoot":"","sources":["../../../src/api/Interceptor.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE7C,QAAA,MAAM,IAAI,EAAE,aAOV,CAAC;AAEH,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.LogApi = LogApi;
|
|
7
|
+
const Interceptor_js_1 = __importDefault(require("./Interceptor.cjs"));
|
|
8
|
+
async function LogApi(data) {
|
|
9
|
+
try {
|
|
10
|
+
const response = await Interceptor_js_1.default.post("/log", data);
|
|
11
|
+
console.log("Log sent successfully:", response.status);
|
|
12
|
+
}
|
|
13
|
+
catch (error) {
|
|
14
|
+
console.error("Failed to send log:", error);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogApi.d.ts","sourceRoot":"","sources":["../../../src/api/LogApi.ts"],"names":[],"mappings":"AAEA,UAAU,UAAU;IAClB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAO5D"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RequestContext = void 0;
|
|
4
|
+
const async_hooks_1 = require("async_hooks");
|
|
5
|
+
const crypto_1 = require("crypto");
|
|
6
|
+
const storage = new async_hooks_1.AsyncLocalStorage();
|
|
7
|
+
class RequestContext {
|
|
8
|
+
static run(fn, correlationId) {
|
|
9
|
+
storage.run({
|
|
10
|
+
correlationId: correlationId ?? (0, crypto_1.randomUUID)(),
|
|
11
|
+
}, fn);
|
|
12
|
+
}
|
|
13
|
+
static getCorrelationId() {
|
|
14
|
+
return storage.getStore()?.correlationId;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.RequestContext = RequestContext;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface RequestContextData {
|
|
2
|
+
correlationId: string;
|
|
3
|
+
}
|
|
4
|
+
export declare class RequestContext {
|
|
5
|
+
static run(fn: () => void, correlationId?: string): void;
|
|
6
|
+
static getCorrelationId(): string | undefined;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=RequestContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RequestContext.d.ts","sourceRoot":"","sources":["../../../../src/core/context/RequestContext.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAC;CACvB;AAID,qBAAa,cAAc;IACzB,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IASxD,MAAM,CAAC,gBAAgB,IAAI,MAAM,GAAG,SAAS;CAG9C"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LogLevels = void 0;
|
|
4
|
+
var LogLevels;
|
|
5
|
+
(function (LogLevels) {
|
|
6
|
+
LogLevels["INFO"] = "info";
|
|
7
|
+
LogLevels["WARN"] = "warn";
|
|
8
|
+
LogLevels["ERROR"] = "error";
|
|
9
|
+
LogLevels["DEBUG"] = "debug";
|
|
10
|
+
LogLevels["CRITICAL"] = "critical";
|
|
11
|
+
})(LogLevels || (exports.LogLevels = LogLevels = {}));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogLevels.d.ts","sourceRoot":"","sources":["../../../../src/core/enum/LogLevels.ts"],"names":[],"mappings":"AAAA,oBAAY,SAAS;IACnB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,KAAK,UAAU;IACf,KAAK,UAAU;IACf,QAAQ,aAAa;CACtB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface LoggerInterface {
|
|
2
|
+
info(message: string, meta?: Record<string, unknown>): void;
|
|
3
|
+
warn(message: string, meta?: Record<string, unknown>): void;
|
|
4
|
+
error(message: string, meta?: Record<string, unknown>): void;
|
|
5
|
+
debug(message: string, meta?: Record<string, unknown>): void;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=LoggerInterface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoggerInterface.d.ts","sourceRoot":"","sources":["../../../../src/core/interface/LoggerInterface.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC9D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogContext.d.ts","sourceRoot":"","sources":["../../../../src/core/types/LogContext.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogEntry.d.ts","sourceRoot":"","sources":["../../../../src/core/types/LogEntry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createCorrelationMiddleware = exports.createLogger = exports.BaseLogger = exports.Levels = exports.LogLevels = void 0;
|
|
4
|
+
var LogLevels_js_1 = require("./core/enum/LogLevels.cjs");
|
|
5
|
+
Object.defineProperty(exports, "LogLevels", { enumerable: true, get: function () { return LogLevels_js_1.LogLevels; } });
|
|
6
|
+
var Levels_js_1 = require("./services/Levels/Levels.cjs");
|
|
7
|
+
Object.defineProperty(exports, "Levels", { enumerable: true, get: function () { return Levels_js_1.Levels; } });
|
|
8
|
+
var Logger_js_1 = require("./services/Logger/Logger.cjs");
|
|
9
|
+
Object.defineProperty(exports, "BaseLogger", { enumerable: true, get: function () { return Logger_js_1.Logger; } });
|
|
10
|
+
const Levels_js_2 = require("./services/Levels/Levels.cjs");
|
|
11
|
+
// const Logger = new Levels();
|
|
12
|
+
const createLogger = (component) => new Levels_js_2.Levels(component);
|
|
13
|
+
exports.createLogger = createLogger;
|
|
14
|
+
var correlationMiddleware_js_1 = require("./middlewares/correlationMiddleware.cjs");
|
|
15
|
+
Object.defineProperty(exports, "createCorrelationMiddleware", { enumerable: true, get: function () { return correlationMiddleware_js_1.createCorrelationMiddleware; } });
|
|
16
|
+
// export { Logger };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { LogLevels } from "./core/enum/LogLevels.js";
|
|
2
|
+
export { LoggerInterface } from "./core/interface/LoggerInterface.js";
|
|
3
|
+
export { LogEntry } from "./core/types/LogEntry.js";
|
|
4
|
+
export { Levels } from "./services/Levels/Levels.js";
|
|
5
|
+
export { Logger as BaseLogger } from "./services/Logger/Logger.js";
|
|
6
|
+
import { Levels } from "./services/Levels/Levels.js";
|
|
7
|
+
export declare const createLogger: (component: string) => Levels;
|
|
8
|
+
export { createCorrelationMiddleware } from "./middlewares/correlationMiddleware.js";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAGnE,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAGrD,eAAO,MAAM,YAAY,GAAI,WAAW,MAAM,WACvB,CAAC;AAGxB,OAAO,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.createCorrelationMiddleware = void 0;
|
|
7
|
+
const RequestContext_js_1 = require("../core/context/RequestContext.cjs");
|
|
8
|
+
const crypto_1 = __importDefault(require("crypto"));
|
|
9
|
+
const createCorrelationMiddleware = () => {
|
|
10
|
+
return (req, res, next) => {
|
|
11
|
+
const correlationId = crypto_1.default.randomUUID();
|
|
12
|
+
RequestContext_js_1.RequestContext.run(() => {
|
|
13
|
+
if (res?.setHeader) {
|
|
14
|
+
res.setHeader("x-correlation-id", correlationId);
|
|
15
|
+
}
|
|
16
|
+
next();
|
|
17
|
+
}, correlationId);
|
|
18
|
+
};
|
|
19
|
+
};
|
|
20
|
+
exports.createCorrelationMiddleware = createCorrelationMiddleware;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"correlationMiddleware.d.ts","sourceRoot":"","sources":["../../../src/middlewares/correlationMiddleware.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,2BAA2B,SAC9B,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,IAAI,SAU7C,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Levels = void 0;
|
|
4
|
+
const Logger_js_1 = require("../Logger/Logger.cjs");
|
|
5
|
+
const LogLevels_js_1 = require("../../core/enum/LogLevels.cjs");
|
|
6
|
+
class Levels extends Logger_js_1.Logger {
|
|
7
|
+
info(message, meta) {
|
|
8
|
+
const entry = this.getLogEntry(message, LogLevels_js_1.LogLevels.INFO, meta);
|
|
9
|
+
this.log(entry);
|
|
10
|
+
}
|
|
11
|
+
warn(message, meta) {
|
|
12
|
+
const entry = this.getLogEntry(message, LogLevels_js_1.LogLevels.WARN, meta);
|
|
13
|
+
this.log(entry);
|
|
14
|
+
}
|
|
15
|
+
error(message, meta) {
|
|
16
|
+
const entry = this.getLogEntry(message, LogLevels_js_1.LogLevels.ERROR, meta);
|
|
17
|
+
this.log(entry);
|
|
18
|
+
}
|
|
19
|
+
debug(message, meta) {
|
|
20
|
+
const entry = this.getLogEntry(message, LogLevels_js_1.LogLevels.DEBUG, meta);
|
|
21
|
+
this.log(entry);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
exports.Levels = Levels;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Logger } from "../Logger/Logger.js";
|
|
2
|
+
import { LoggerInterface } from "../../core/interface/LoggerInterface.js";
|
|
3
|
+
export declare class Levels extends Logger implements LoggerInterface {
|
|
4
|
+
info(message: string, meta?: Record<string, unknown>): void;
|
|
5
|
+
warn(message: string, meta?: Record<string, unknown>): void;
|
|
6
|
+
error(message: string, meta?: Record<string, unknown>): void;
|
|
7
|
+
debug(message: string, meta?: Record<string, unknown>): void;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=Levels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Levels.d.ts","sourceRoot":"","sources":["../../../../src/services/Levels/Levels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAE1E,qBAAa,MAAO,SAAQ,MAAO,YAAW,eAAe;IAC3D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAK3D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAM3D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAK5D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAI7D"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.Logger = void 0;
|
|
37
|
+
const winston_1 = __importStar(require("winston"));
|
|
38
|
+
const RequestContext_js_1 = require("../../core/context/RequestContext.cjs");
|
|
39
|
+
class Logger {
|
|
40
|
+
winstonLogger;
|
|
41
|
+
componentName;
|
|
42
|
+
constructor(componentName) {
|
|
43
|
+
this.componentName = componentName;
|
|
44
|
+
this.winstonLogger = winston_1.default.createLogger({
|
|
45
|
+
level: "debug",
|
|
46
|
+
levels: {
|
|
47
|
+
error: 0,
|
|
48
|
+
warn: 1,
|
|
49
|
+
info: 2,
|
|
50
|
+
debug: 3,
|
|
51
|
+
},
|
|
52
|
+
format: winston_1.format.combine(winston_1.format.timestamp({ format: "YYYY-MM-DD HH:mm:ss" }), winston_1.format.printf(({ timestamp, level, message, component, correlationId, ...meta }) => {
|
|
53
|
+
const metaString = Object.keys(meta).length > 0 ? ` ${JSON.stringify(meta)}` : "";
|
|
54
|
+
return `[${component}] [${timestamp}] [${level.toUpperCase()}] [${correlationId}] ${message}${metaString}`;
|
|
55
|
+
})),
|
|
56
|
+
transports: [
|
|
57
|
+
new winston_1.transports.Console({
|
|
58
|
+
format: winston_1.format.combine(winston_1.format.colorize({ all: true }), winston_1.format.timestamp({ format: "YYYY-MM-DD HH:mm:ss" }), winston_1.format.printf(({ timestamp, level, message, ...meta }) => {
|
|
59
|
+
const metaString = Object.keys(meta).length > 0 ? ` ${JSON.stringify(meta)}` : "";
|
|
60
|
+
return `[${componentName}] [${timestamp}] [${level}] ${message}${metaString}`;
|
|
61
|
+
})),
|
|
62
|
+
}),
|
|
63
|
+
],
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
log(entry) {
|
|
67
|
+
try {
|
|
68
|
+
const correlationId = RequestContext_js_1.RequestContext.getCorrelationId();
|
|
69
|
+
const logMeta = {
|
|
70
|
+
component: this.componentName,
|
|
71
|
+
correlationId,
|
|
72
|
+
...entry.meta,
|
|
73
|
+
};
|
|
74
|
+
this.winstonLogger.log(entry.level, entry.message, logMeta);
|
|
75
|
+
// Send structured log to API (no formatting)
|
|
76
|
+
// LogApi({
|
|
77
|
+
// logs: {
|
|
78
|
+
// ...entry,
|
|
79
|
+
// component: this.componentName,
|
|
80
|
+
// correlationId,
|
|
81
|
+
// },
|
|
82
|
+
// });
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
// never throw from logger
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
getWinstonLogger() {
|
|
89
|
+
return this.winstonLogger;
|
|
90
|
+
}
|
|
91
|
+
getLogEntry(message, logLevel, meta) {
|
|
92
|
+
const entry = {
|
|
93
|
+
message,
|
|
94
|
+
meta,
|
|
95
|
+
timestamp: new Date().toISOString(),
|
|
96
|
+
level: logLevel,
|
|
97
|
+
};
|
|
98
|
+
return entry;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
exports.Logger = Logger;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Logger as WinstonLogger } from "winston";
|
|
2
|
+
import { LogEntry } from "../../core/types/LogEntry.js";
|
|
3
|
+
import { LogLevels } from "../../core/enum/LogLevels.js";
|
|
4
|
+
export declare abstract class Logger {
|
|
5
|
+
protected winstonLogger: WinstonLogger;
|
|
6
|
+
private componentName;
|
|
7
|
+
constructor(componentName: string);
|
|
8
|
+
protected log(entry: LogEntry): void;
|
|
9
|
+
getWinstonLogger(): WinstonLogger;
|
|
10
|
+
protected getLogEntry(message: string, logLevel: LogLevels, meta?: Record<string, unknown>): LogEntry;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=Logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../../../src/services/Logger/Logger.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,MAAM,IAAI,aAAa,EAAsB,MAAM,SAAS,CAAC;AAE/E,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAGxD,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAGzD,8BAAsB,MAAM;IAC1B,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IACvC,OAAO,CAAC,aAAa,CAAS;gBAGlB,aAAa,EAAE,MAAM;IA4CjC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAyBpC,gBAAgB,IAAI,aAAa;IAIjC,SAAS,CAAC,WAAW,CACnB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,SAAS,EACnB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,QAAQ;CASZ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Interceptor.d.ts","sourceRoot":"","sources":["../../../src/api/Interceptor.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE7C,QAAA,MAAM,IAAI,EAAE,aAOV,CAAC;AAEH,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogApi.d.ts","sourceRoot":"","sources":["../../../src/api/LogApi.ts"],"names":[],"mappings":"AAEA,UAAU,UAAU;IAClB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAO5D"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import HTTP from "./Interceptor.js";
|
|
2
|
+
export async function LogApi(data) {
|
|
3
|
+
try {
|
|
4
|
+
const response = await HTTP.post("/log", data);
|
|
5
|
+
console.log("Log sent successfully:", response.status);
|
|
6
|
+
}
|
|
7
|
+
catch (error) {
|
|
8
|
+
console.error("Failed to send log:", error);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface RequestContextData {
|
|
2
|
+
correlationId: string;
|
|
3
|
+
}
|
|
4
|
+
export declare class RequestContext {
|
|
5
|
+
static run(fn: () => void, correlationId?: string): void;
|
|
6
|
+
static getCorrelationId(): string | undefined;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=RequestContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RequestContext.d.ts","sourceRoot":"","sources":["../../../../src/core/context/RequestContext.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,MAAM,CAAC;CACvB;AAID,qBAAa,cAAc;IACzB,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI;IASxD,MAAM,CAAC,gBAAgB,IAAI,MAAM,GAAG,SAAS;CAG9C"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AsyncLocalStorage } from "async_hooks";
|
|
2
|
+
import { randomUUID } from "crypto";
|
|
3
|
+
const storage = new AsyncLocalStorage();
|
|
4
|
+
export class RequestContext {
|
|
5
|
+
static run(fn, correlationId) {
|
|
6
|
+
storage.run({
|
|
7
|
+
correlationId: correlationId ?? randomUUID(),
|
|
8
|
+
}, fn);
|
|
9
|
+
}
|
|
10
|
+
static getCorrelationId() {
|
|
11
|
+
return storage.getStore()?.correlationId;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogLevels.d.ts","sourceRoot":"","sources":["../../../../src/core/enum/LogLevels.ts"],"names":[],"mappings":"AAAA,oBAAY,SAAS;IACnB,IAAI,SAAS;IACb,IAAI,SAAS;IACb,KAAK,UAAU;IACf,KAAK,UAAU;IACf,QAAQ,aAAa;CACtB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface LoggerInterface {
|
|
2
|
+
info(message: string, meta?: Record<string, unknown>): void;
|
|
3
|
+
warn(message: string, meta?: Record<string, unknown>): void;
|
|
4
|
+
error(message: string, meta?: Record<string, unknown>): void;
|
|
5
|
+
debug(message: string, meta?: Record<string, unknown>): void;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=LoggerInterface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoggerInterface.d.ts","sourceRoot":"","sources":["../../../../src/core/interface/LoggerInterface.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC5D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC9D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogContext.d.ts","sourceRoot":"","sources":["../../../../src/core/types/LogContext.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LogEntry.d.ts","sourceRoot":"","sources":["../../../../src/core/types/LogEntry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { LogLevels } from "./core/enum/LogLevels.js";
|
|
2
|
+
export { LoggerInterface } from "./core/interface/LoggerInterface.js";
|
|
3
|
+
export { LogEntry } from "./core/types/LogEntry.js";
|
|
4
|
+
export { Levels } from "./services/Levels/Levels.js";
|
|
5
|
+
export { Logger as BaseLogger } from "./services/Logger/Logger.js";
|
|
6
|
+
import { Levels } from "./services/Levels/Levels.js";
|
|
7
|
+
export declare const createLogger: (component: string) => Levels;
|
|
8
|
+
export { createCorrelationMiddleware } from "./middlewares/correlationMiddleware.js";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAO,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAGnE,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAGrD,eAAO,MAAM,YAAY,GAAI,WAAW,MAAM,WACvB,CAAC;AAGxB,OAAO,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export { LogLevels } from "./core/enum/LogLevels.js";
|
|
2
|
+
export { Levels } from "./services/Levels/Levels.js";
|
|
3
|
+
export { Logger as BaseLogger } from "./services/Logger/Logger.js";
|
|
4
|
+
import { Levels } from "./services/Levels/Levels.js";
|
|
5
|
+
// const Logger = new Levels();
|
|
6
|
+
export const createLogger = (component) => new Levels(component);
|
|
7
|
+
export { createCorrelationMiddleware } from "./middlewares/correlationMiddleware.js";
|
|
8
|
+
// export { Logger };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"correlationMiddleware.d.ts","sourceRoot":"","sources":["../../../src/middlewares/correlationMiddleware.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,2BAA2B,SAC9B,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,IAAI,SAU7C,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { RequestContext } from "../core/context/RequestContext.js";
|
|
2
|
+
import crypto from "crypto";
|
|
3
|
+
export const createCorrelationMiddleware = () => {
|
|
4
|
+
return (req, res, next) => {
|
|
5
|
+
const correlationId = crypto.randomUUID();
|
|
6
|
+
RequestContext.run(() => {
|
|
7
|
+
if (res?.setHeader) {
|
|
8
|
+
res.setHeader("x-correlation-id", correlationId);
|
|
9
|
+
}
|
|
10
|
+
next();
|
|
11
|
+
}, correlationId);
|
|
12
|
+
};
|
|
13
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Logger } from "../Logger/Logger.js";
|
|
2
|
+
import { LoggerInterface } from "../../core/interface/LoggerInterface.js";
|
|
3
|
+
export declare class Levels extends Logger implements LoggerInterface {
|
|
4
|
+
info(message: string, meta?: Record<string, unknown>): void;
|
|
5
|
+
warn(message: string, meta?: Record<string, unknown>): void;
|
|
6
|
+
error(message: string, meta?: Record<string, unknown>): void;
|
|
7
|
+
debug(message: string, meta?: Record<string, unknown>): void;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=Levels.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Levels.d.ts","sourceRoot":"","sources":["../../../../src/services/Levels/Levels.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAG7C,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAE1E,qBAAa,MAAO,SAAQ,MAAO,YAAW,eAAe;IAC3D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAK3D,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAM3D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAK5D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAI7D"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Logger } from "../Logger/Logger.js";
|
|
2
|
+
import { LogLevels } from "../../core/enum/LogLevels.js";
|
|
3
|
+
export class Levels extends Logger {
|
|
4
|
+
info(message, meta) {
|
|
5
|
+
const entry = this.getLogEntry(message, LogLevels.INFO, meta);
|
|
6
|
+
this.log(entry);
|
|
7
|
+
}
|
|
8
|
+
warn(message, meta) {
|
|
9
|
+
const entry = this.getLogEntry(message, LogLevels.WARN, meta);
|
|
10
|
+
this.log(entry);
|
|
11
|
+
}
|
|
12
|
+
error(message, meta) {
|
|
13
|
+
const entry = this.getLogEntry(message, LogLevels.ERROR, meta);
|
|
14
|
+
this.log(entry);
|
|
15
|
+
}
|
|
16
|
+
debug(message, meta) {
|
|
17
|
+
const entry = this.getLogEntry(message, LogLevels.DEBUG, meta);
|
|
18
|
+
this.log(entry);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Logger as WinstonLogger } from "winston";
|
|
2
|
+
import { LogEntry } from "../../core/types/LogEntry.js";
|
|
3
|
+
import { LogLevels } from "../../core/enum/LogLevels.js";
|
|
4
|
+
export declare abstract class Logger {
|
|
5
|
+
protected winstonLogger: WinstonLogger;
|
|
6
|
+
private componentName;
|
|
7
|
+
constructor(componentName: string);
|
|
8
|
+
protected log(entry: LogEntry): void;
|
|
9
|
+
getWinstonLogger(): WinstonLogger;
|
|
10
|
+
protected getLogEntry(message: string, logLevel: LogLevels, meta?: Record<string, unknown>): LogEntry;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=Logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../../../src/services/Logger/Logger.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,MAAM,IAAI,aAAa,EAAsB,MAAM,SAAS,CAAC;AAE/E,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAGxD,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAGzD,8BAAsB,MAAM;IAC1B,SAAS,CAAC,aAAa,EAAE,aAAa,CAAC;IACvC,OAAO,CAAC,aAAa,CAAS;gBAGlB,aAAa,EAAE,MAAM;IA4CjC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAyBpC,gBAAgB,IAAI,aAAa;IAIjC,SAAS,CAAC,WAAW,CACnB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,SAAS,EACnB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,QAAQ;CASZ"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import winston, { format, transports } from "winston";
|
|
2
|
+
import { RequestContext } from "../../core/context/RequestContext.js";
|
|
3
|
+
export class Logger {
|
|
4
|
+
winstonLogger;
|
|
5
|
+
componentName;
|
|
6
|
+
constructor(componentName) {
|
|
7
|
+
this.componentName = componentName;
|
|
8
|
+
this.winstonLogger = winston.createLogger({
|
|
9
|
+
level: "debug",
|
|
10
|
+
levels: {
|
|
11
|
+
error: 0,
|
|
12
|
+
warn: 1,
|
|
13
|
+
info: 2,
|
|
14
|
+
debug: 3,
|
|
15
|
+
},
|
|
16
|
+
format: format.combine(format.timestamp({ format: "YYYY-MM-DD HH:mm:ss" }), format.printf(({ timestamp, level, message, component, correlationId, ...meta }) => {
|
|
17
|
+
const metaString = Object.keys(meta).length > 0 ? ` ${JSON.stringify(meta)}` : "";
|
|
18
|
+
return `[${component}] [${timestamp}] [${level.toUpperCase()}] [${correlationId}] ${message}${metaString}`;
|
|
19
|
+
})),
|
|
20
|
+
transports: [
|
|
21
|
+
new transports.Console({
|
|
22
|
+
format: format.combine(format.colorize({ all: true }), format.timestamp({ format: "YYYY-MM-DD HH:mm:ss" }), format.printf(({ timestamp, level, message, ...meta }) => {
|
|
23
|
+
const metaString = Object.keys(meta).length > 0 ? ` ${JSON.stringify(meta)}` : "";
|
|
24
|
+
return `[${componentName}] [${timestamp}] [${level}] ${message}${metaString}`;
|
|
25
|
+
})),
|
|
26
|
+
}),
|
|
27
|
+
],
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
log(entry) {
|
|
31
|
+
try {
|
|
32
|
+
const correlationId = RequestContext.getCorrelationId();
|
|
33
|
+
const logMeta = {
|
|
34
|
+
component: this.componentName,
|
|
35
|
+
correlationId,
|
|
36
|
+
...entry.meta,
|
|
37
|
+
};
|
|
38
|
+
this.winstonLogger.log(entry.level, entry.message, logMeta);
|
|
39
|
+
// Send structured log to API (no formatting)
|
|
40
|
+
// LogApi({
|
|
41
|
+
// logs: {
|
|
42
|
+
// ...entry,
|
|
43
|
+
// component: this.componentName,
|
|
44
|
+
// correlationId,
|
|
45
|
+
// },
|
|
46
|
+
// });
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
// never throw from logger
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
getWinstonLogger() {
|
|
53
|
+
return this.winstonLogger;
|
|
54
|
+
}
|
|
55
|
+
getLogEntry(message, logLevel, meta) {
|
|
56
|
+
const entry = {
|
|
57
|
+
message,
|
|
58
|
+
meta,
|
|
59
|
+
timestamp: new Date().toISOString(),
|
|
60
|
+
level: logLevel,
|
|
61
|
+
};
|
|
62
|
+
return entry;
|
|
63
|
+
}
|
|
64
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "logiscout",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Logiscout — a structured logger library",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/cjs/index.cjs",
|
|
7
|
+
"module": "./dist/esm/index.js",
|
|
8
|
+
"types": "./dist/types/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": "./dist/esm/index.js",
|
|
12
|
+
"require": "./dist/cjs/index.cjs",
|
|
13
|
+
"types": "./dist/types/index.d.ts"
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"dist"
|
|
18
|
+
],
|
|
19
|
+
"scripts": {
|
|
20
|
+
"build": "npm run build:esm && npm run build:cjs && npm run rename:cjs",
|
|
21
|
+
"build:esm": "tsc -p tsconfig.esm.json",
|
|
22
|
+
"build:cjs": "tsc -p tsconfig.cjs.json",
|
|
23
|
+
"rename:cjs": "node scripts/rename-cjs.cjs",
|
|
24
|
+
"start": "ts-node test/test.ts"
|
|
25
|
+
},
|
|
26
|
+
"keywords": [
|
|
27
|
+
"logger",
|
|
28
|
+
"logging",
|
|
29
|
+
"correlation-id",
|
|
30
|
+
"async-context",
|
|
31
|
+
"structured-logging",
|
|
32
|
+
"nodejs",
|
|
33
|
+
"express",
|
|
34
|
+
"winston"
|
|
35
|
+
],
|
|
36
|
+
"author": "YOUR_NAME",
|
|
37
|
+
"license": "MIT",
|
|
38
|
+
"repository": {
|
|
39
|
+
"type": "git",
|
|
40
|
+
"url": "https://github.com/YOUR_GITHUB_USERNAME/logicout"
|
|
41
|
+
},
|
|
42
|
+
"homepage": "https://github.com/YOUR_GITHUB_USERNAME/logicout#readme",
|
|
43
|
+
"bugs": {
|
|
44
|
+
"url": "https://github.com/YOUR_GITHUB_USERNAME/logicout/issues"
|
|
45
|
+
},
|
|
46
|
+
"engines": {
|
|
47
|
+
"node": ">=18"
|
|
48
|
+
},
|
|
49
|
+
"dependencies": {
|
|
50
|
+
"winston": "^3.11.0"
|
|
51
|
+
},
|
|
52
|
+
"devDependencies": {
|
|
53
|
+
"typescript": "^5.3.3",
|
|
54
|
+
"@types/node": "^20.10.0"
|
|
55
|
+
}
|
|
56
|
+
}
|