ffffng/server/types/logger.ts

34 lines
773 B
TypeScript
Raw Permalink Normal View History

export type LogLevel = "debug" | "info" | "warn" | "error" | "profile";
export const LogLevels: LogLevel[] = [
"debug",
"info",
"warn",
"error",
"profile",
];
export function isLogLevel(arg: unknown): arg is LogLevel {
if (typeof arg !== "string") {
return false;
}
for (const level of LogLevels) {
if (level === arg) {
return true;
}
}
return false;
}
export interface TaggedLogger {
log(level: LogLevel, ...args: unknown[]): void;
debug(...args: unknown[]): void;
info(...args: unknown[]): void;
warn(...args: unknown[]): void;
error(...args: unknown[]): void;
profile(...args: unknown[]): void;
}
export interface Logger {
tag(...tags: string[]): TaggedLogger;
}