UNPKG

@doneisbetter/sso

Version:

A secure, privacy-focused SSO solution with ephemeral token handling

58 lines 1.98 kB
import winston from 'winston'; import { format } from 'winston'; const { combine, timestamp, json } = format; // Define custom log levels const levels = { error: 0, warn: 1, info: 2, http: 3, debug: 4, }; // Create the logger instance export const logger = winston.createLogger({ levels, format: combine(timestamp({ format: 'YYYY-MM-DDTHH:mm:ss.SSSZ' }), json()), transports: [ new winston.transports.File({ filename: 'error.log', level: 'error' }), new winston.transports.File({ filename: 'combined.log' }), new winston.transports.Console({ format: combine(format.colorize(), format.simple()) }) ] }); // Export log categories for better organization export const auditLogger = { authEvent: (userId, event, success, details = {}) => { logger.info('Authentication Event', Object.assign(Object.assign({ type: 'AUTH', userId, event, success }, details), { timestamp: new Date().toISOString() })); }, tokenUsage: (tokenId, action, details = {}) => { logger.info('Token Usage', Object.assign(Object.assign({ type: 'TOKEN', tokenId, action }, details), { timestamp: new Date().toISOString() })); }, consentChange: (userId, consentType, status, details = {}) => { logger.info('Consent Change', Object.assign(Object.assign({ type: 'CONSENT', userId, consentType, status }, details), { timestamp: new Date().toISOString() })); } }; // Error tracking with enhanced context export const errorLogger = { logError: (error, context = {}) => { logger.error('Application Error', { type: 'ERROR', error: { name: error.name, message: error.message, stack: error.stack, }, context, timestamp: new Date().toISOString() }); } }; //# sourceMappingURL=logger.js.map