create-sekiban-app
Version:
Create a new Sekiban application with Dapr
45 lines (39 loc) • 1.24 kB
text/typescript
const logLevels = {
error: 0,
warn: 1,
info: 2,
debug: 3,
} as const;
type LogLevel = keyof typeof logLevels;
const currentLogLevel: LogLevel = (process.env.LOG_LEVEL as LogLevel) || 'info';
const shouldLog = (level: LogLevel): boolean => {
return logLevels[level] <= logLevels[currentLogLevel];
};
const formatMessage = (level: LogLevel, message: string, ...args: any[]): string => {
const timestamp = new Date().toISOString();
const formattedArgs = args.length > 0 ? ' ' + JSON.stringify(args) : '';
return `[${timestamp}] [${level.toUpperCase()}] ${message}${formattedArgs}`;
};
const logger = {
error: (message: string, ...args: any[]) => {
if (shouldLog('error')) {
console.error(formatMessage('error', message, ...args));
}
},
warn: (message: string, ...args: any[]) => {
if (shouldLog('warn')) {
console.warn(formatMessage('warn', message, ...args));
}
},
info: (message: string, ...args: any[]) => {
if (shouldLog('info')) {
console.log(formatMessage('info', message, ...args));
}
},
debug: (message: string, ...args: any[]) => {
if (shouldLog('debug')) {
console.log(formatMessage('debug', message, ...args));
}
},
};
export default logger;