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
45 lines
1.2 KiB
TypeScript
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
|
|
)
|
|
},
|
|
}
|
|
}
|