Files
web/packages/common/logger/createLogger.ts
Joakim Jäderberg daf765f3d5 Merged in feature/wrap-logging (pull request #2511)
Feature/wrap logging

* feat: change all logging to go through our own logger function so that we can control log levels

* move packages/trpc to using our own logger

* merge


Approved-by: Linus Flood
2025-07-03 12:37:04 +00:00

45 lines
1.2 KiB
TypeScript

export function createLogger(loggerPrefix: string | (() => Promise<string>)) {
const asyncWrapper: () => Promise<string> =
typeof loggerPrefix === "string" ? async () => loggerPrefix : loggerPrefix
const getLoggerPrefix = async () => {
const prefix = await asyncWrapper()
if (!prefix) {
return ""
}
return `[${prefix}]`
}
return {
async debug(message: string, ...args: unknown[]): Promise<void> {
// TODO: Make this configurable
if (process.env.NODE_ENV !== "development") {
return
}
console.debug(
"\x1b[36m%s\x1b[0m",
`${await getLoggerPrefix()} ${message}`.trim(),
...args
)
},
async info(message: string, ...args: unknown[]): Promise<void> {
console.info(`${await getLoggerPrefix()} ${message}`.trim(), ...args)
},
async warn(message: string, ...args: unknown[]): Promise<void> {
console.warn(
`${await getLoggerPrefix()} [warn] - ${message}`.trim(),
...args
)
},
async error(message: string, ...args: unknown[]): Promise<void> {
console.error(
`${await getLoggerPrefix()} [error] - ${message}`.trim(),
...args
)
},
}
}