style: format winston logger changes
This commit is contained in:
+14
-8
@@ -91,13 +91,20 @@ const serializeLogValue = (value: unknown): unknown => {
|
|||||||
|
|
||||||
const formatLogMetadata = (metadata: LogMetadata): LogMetadata => {
|
const formatLogMetadata = (metadata: LogMetadata): LogMetadata => {
|
||||||
return Object.fromEntries(
|
return Object.fromEntries(
|
||||||
Object.entries(metadata).map(([key, value]) => [key, serializeLogValue(value)]),
|
Object.entries(metadata).map(([key, value]) => [
|
||||||
|
key,
|
||||||
|
serializeLogValue(value),
|
||||||
|
]),
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const metadataFormat = winston.format((info) => {
|
const metadataFormat = winston.format((info) => {
|
||||||
const { level: _level, message: _message, timestamp: _timestamp, ...metadata } =
|
const {
|
||||||
info;
|
level: _level,
|
||||||
|
message: _message,
|
||||||
|
timestamp: _timestamp,
|
||||||
|
...metadata
|
||||||
|
} = info;
|
||||||
|
|
||||||
for (const key of Object.keys(metadata)) {
|
for (const key of Object.keys(metadata)) {
|
||||||
delete info[key];
|
delete info[key];
|
||||||
@@ -179,16 +186,15 @@ function wrapLogger(wLogger: winston.Logger): CustomLogger {
|
|||||||
warn: logAtLevel("warn"),
|
warn: logAtLevel("warn"),
|
||||||
info: logAtLevel("info"),
|
info: logAtLevel("info"),
|
||||||
debug: logAtLevel("debug"),
|
debug: logAtLevel("debug"),
|
||||||
trace: logAtLevel("debug"), // Map trace to debug in Winston npm levels
|
trace: logAtLevel("debug"),
|
||||||
fatal: logAtLevel("error"), // Map fatal to error in Winston npm levels
|
fatal: logAtLevel("error"),
|
||||||
silent: () => {},
|
silent: () => {},
|
||||||
child: (options: any) => {
|
child: (options: any) => {
|
||||||
const childWinston = wLogger.child(options);
|
const childWinston = wLogger.child(options);
|
||||||
return wrapLogger(childWinston);
|
return wrapLogger(childWinston);
|
||||||
}
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
// Add all winston.Logger properties/methods to custom logger to make typescript happy for standard properties
|
|
||||||
const proxy = new Proxy(wrapped, {
|
const proxy = new Proxy(wrapped, {
|
||||||
get(target, prop) {
|
get(target, prop) {
|
||||||
if (prop in target) {
|
if (prop in target) {
|
||||||
@@ -199,7 +205,7 @@ function wrapLogger(wLogger: winston.Logger): CustomLogger {
|
|||||||
return val.bind(wLogger);
|
return val.bind(wLogger);
|
||||||
}
|
}
|
||||||
return val;
|
return val;
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
return proxy;
|
return proxy;
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
import { describe, expect, it } from "vitest";
|
import { describe, expect, it } from "vitest";
|
||||||
import { formatLogMetadataForTest, serializeLogValueForTest } from "../src/logger";
|
import {
|
||||||
|
formatLogMetadataForTest,
|
||||||
|
serializeLogValueForTest,
|
||||||
|
} from "../src/logger";
|
||||||
|
|
||||||
class TestError extends Error {
|
class TestError extends Error {
|
||||||
public code = "TEST_CODE";
|
public code = "TEST_CODE";
|
||||||
@@ -27,7 +30,9 @@ describe("logger serialization", () => {
|
|||||||
it("serializes nested error metadata keys", () => {
|
it("serializes nested error metadata keys", () => {
|
||||||
const error = new TestError();
|
const error = new TestError();
|
||||||
|
|
||||||
expect(formatLogMetadataForTest({ error, err: error, reason: error })).toMatchObject({
|
expect(
|
||||||
|
formatLogMetadataForTest({ error, err: error, reason: error }),
|
||||||
|
).toMatchObject({
|
||||||
error: {
|
error: {
|
||||||
name: "TestError",
|
name: "TestError",
|
||||||
message: "test failure",
|
message: "test failure",
|
||||||
@@ -63,4 +68,4 @@ describe("logger serialization", () => {
|
|||||||
pattern: "/voice/i",
|
pattern: "/voice/i",
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user