65 lines
2.1 KiB
TypeScript
65 lines
2.1 KiB
TypeScript
// Worker-compatible logger shim using console
|
|
// Winston is not compatible with Cloudflare Workers
|
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
interface LogInfo {
|
|
level: string;
|
|
message: string;
|
|
timestamp?: string;
|
|
[key: string]: unknown;
|
|
}
|
|
|
|
type LogMethod = (message: string, ...meta: unknown[]) => void;
|
|
|
|
interface Logger {
|
|
error: LogMethod;
|
|
warn: LogMethod;
|
|
info: LogMethod;
|
|
http: LogMethod;
|
|
verbose: LogMethod;
|
|
debug: LogMethod;
|
|
silly: LogMethod;
|
|
log: (level: string, message: string, ...meta: unknown[]) => void;
|
|
}
|
|
|
|
const formatMessage = (level: string, message: string): string => {
|
|
const timestamp = new Date().toISOString();
|
|
return `[${timestamp}] ${level}: ${message}`;
|
|
};
|
|
|
|
const logger: Logger = {
|
|
error: (message: string, ...meta: unknown[]) => {
|
|
// eslint-disable-next-line no-console
|
|
console.error(formatMessage('error', message), ...meta);
|
|
},
|
|
warn: (message: string, ...meta: unknown[]) => {
|
|
// eslint-disable-next-line no-console
|
|
console.warn(formatMessage('warn', message), ...meta);
|
|
},
|
|
info: (message: string, ...meta: unknown[]) => {
|
|
// eslint-disable-next-line no-console
|
|
console.info(formatMessage('info', message), ...meta);
|
|
},
|
|
http: (message: string, ...meta: unknown[]) => {
|
|
// eslint-disable-next-line no-console
|
|
console.log(formatMessage('http', message), ...meta);
|
|
},
|
|
verbose: (message: string, ...meta: unknown[]) => {
|
|
// eslint-disable-next-line no-console
|
|
console.log(formatMessage('verbose', message), ...meta);
|
|
},
|
|
debug: (message: string, ...meta: unknown[]) => {
|
|
// eslint-disable-next-line no-console
|
|
console.debug(formatMessage('debug', message), ...meta);
|
|
},
|
|
silly: (message: string, ...meta: unknown[]) => {
|
|
// eslint-disable-next-line no-console
|
|
console.log(formatMessage('silly', message), ...meta);
|
|
},
|
|
log: (level: string, message: string, ...meta: unknown[]) => {
|
|
// eslint-disable-next-line no-console
|
|
console.log(formatMessage(level, message), ...meta);
|
|
},
|
|
};
|
|
|
|
export default logger;
|