UNPKG

aegis-auth

Version:

A credentials-based auth solution for Next.js (and other Node projects) with IP rate-limiting, account lockouts, and sessions in DB.

73 lines 2.29 kB
import { LogLevel } from "../types"; export class ConsoleLogger { constructor(level) { this.logLevel = LogLevel.Info; if (level) { this.logLevel = level; } } debug(message, context) { if (this.shouldLog(LogLevel.Debug)) { this.logWithLevel(LogLevel.Debug, message, context); } } info(message, context) { if (this.shouldLog(LogLevel.Info)) { this.logWithLevel(LogLevel.Info, message, context); } } warn(message, context) { if (this.shouldLog(LogLevel.Warn)) { this.logWithLevel(LogLevel.Warn, message, context); } } error(message, context) { if (this.shouldLog(LogLevel.Error)) { this.logWithLevel(LogLevel.Error, message, context); } } securityEvent(eventName, context) { if (this.shouldLog(LogLevel.Security)) { this.logWithLevel(LogLevel.Security, eventName, context); } } shouldLog(level) { const currentLevelValue = this.getLogLevelValue(this.logLevel); const messageLevelValue = this.getLogLevelValue(level); return messageLevelValue >= currentLevelValue; } getLogLevelValue(level) { switch (level) { case LogLevel.Debug: return 1; case LogLevel.Info: return 2; case LogLevel.Warn: return 3; case LogLevel.Error: return 4; case LogLevel.Security: return 5; // Security events are most important default: return 2; // Info level by default if unknown } } logWithLevel(level, message, context) { let logMessage = `[AegisAuth - ${level.toUpperCase()}] ${message}`; if (context) { logMessage += ` - Context: ${JSON.stringify(context)}`; } switch (level) { case LogLevel.Error: console.error(logMessage); break; case LogLevel.Warn: console.warn(logMessage); break; default: console.log(logMessage); break; } } } //# sourceMappingURL=logger.js.map