32 lines
859 B
TypeScript
32 lines
859 B
TypeScript
// MARK: Side-Effects
|
|
// This module contains a side-effect because everything running here
|
|
// is static and logger is later modified in `app/server/index.ts` to
|
|
// disable debug logging if the `HEADPLANE_DEBUG_LOG` specifies as such.
|
|
|
|
const levels = ['info', 'warn', 'error', 'debug'] as const;
|
|
type Category = 'server' | 'config' | 'agent' | 'api';
|
|
|
|
export interface Logger
|
|
extends Record<
|
|
(typeof levels)[number],
|
|
(category: Category, message: string, ...args: unknown[]) => void
|
|
> {
|
|
debugEnabled: boolean;
|
|
}
|
|
|
|
export default {
|
|
debugEnabled: true,
|
|
...Object.fromEntries(
|
|
levels.map((level) => [
|
|
level,
|
|
(category: Category, message: string, ...args: unknown[]) => {
|
|
const date = new Date().toISOString();
|
|
console.log(
|
|
`${date} [${category}] ${level.toUpperCase()}: ${message}`,
|
|
...args,
|
|
);
|
|
},
|
|
]),
|
|
),
|
|
} as Logger;
|