File size: 2,193 Bytes
bf48b89 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 | // 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;
|