svelte-guardian
Version:
Batteries included authentication for SvelteKit applications.
52 lines (51 loc) • 1.7 kB
JavaScript
class GuardianLogger {
config;
constructor(config) {
this.config = {
enabled: config?.enabled ?? true,
level: config?.level ?? 'info'
};
}
log(level, message, data) {
if (!this.config.enabled)
return;
const logLevels = ['debug', 'info', 'warn', 'error'];
const currentLevelIndex = logLevels.indexOf(this.config.level);
const messageLevelIndex = logLevels.indexOf(level);
if (messageLevelIndex >= currentLevelIndex) {
const timestamp = new Date().toISOString();
const logPrefix = `[SVELTE-GUARDIAN][${level.toUpperCase()}][${timestamp}] `;
switch (level) {
case 'debug':
console.debug(logPrefix, message, data || '');
break;
case 'info':
console.info(logPrefix, message, data || '');
break;
case 'warn':
console.warn(logPrefix, message, data || '');
break;
case 'error':
console.error(logPrefix, message, data || '');
break;
default:
console.log(logPrefix, message, data || '');
}
}
}
debug(message, data) {
this.log('debug', message, data);
}
info(message, data) {
this.log('info', message, data);
}
warn(message, data) {
this.log('warn', message, data);
}
error(message, data) {
this.log('error', message, data);
}
}
export function createLogger(loggerConfig) {
return new GuardianLogger(loggerConfig);
}