Skip to content

Commit 8d50fad

Browse files
refactor: rename logger variable to currentLogger and update proxy implementation
1 parent fe8e5e9 commit 8d50fad

File tree

1 file changed

+22
-9
lines changed

1 file changed

+22
-9
lines changed

src/logger.ts

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import { pino } from "pino";
22

3-
let logger: any;
3+
// 1. The actual logger instance, swapped out as needed
4+
let currentLogger: any;
45

56
if (process.env.NODE_ENV === "development") {
6-
logger = pino({
7+
currentLogger = pino({
78
level: "debug",
89
transport: {
910
targets: [
@@ -23,8 +24,8 @@ if (process.env.NODE_ENV === "development") {
2324
},
2425
});
2526
} else {
26-
// NULL logger
27-
logger = pino({
27+
// Null logger (logs go to /dev/null or NUL)
28+
currentLogger = pino({
2829
level: "info",
2930
transport: {
3031
target: "pino/file",
@@ -35,12 +36,24 @@ if (process.env.NODE_ENV === "development") {
3536
});
3637
}
3738

38-
/**
39-
* Set a custom logger instance
40-
* @param customLogger - The logger instance to use
41-
*/
39+
// 2. Proxy logger: always delegates to the currentLogger
40+
const logger: any = new Proxy(
41+
{},
42+
{
43+
get(_target, prop) {
44+
// Forward function calls to currentLogger
45+
if (typeof currentLogger[prop] === "function") {
46+
return (...args: any[]) => currentLogger[prop](...args);
47+
}
48+
// Forward property gets
49+
return currentLogger[prop];
50+
},
51+
},
52+
);
53+
54+
// 3. Setter to update the logger instance everywhere
4255
export function setLogger(customLogger: any): void {
43-
logger = customLogger;
56+
currentLogger = customLogger;
4457
}
4558

4659
export default logger;

0 commit comments

Comments
 (0)