UNPKG

@bernierllc/logging

Version:

A comprehensive logging package with Winston integration for audit and system logging

234 lines (231 loc) 13.5 kB
"use strict"; /* Copyright (c) 2025 Bernier LLC This file is licensed to the client under a limited-use license. The client may use and modify this code *only within the scope of the project it was delivered for*. Redistribution or use in other products or commercial offerings is not permitted without written consent from Bernier LLC. */ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.MIGRATION_GUIDE = exports.logger = exports.defaultSystemLogger = exports.defaultAuditLogger = exports.createBrowserLogger = exports.winston = exports.logSystemEntry = exports.logDebug = exports.logInfo = exports.logWarn = exports.logError = exports.logSystem = exports.createSystemLogger = exports.logAuditEntry = exports.logAudit = exports.createAuditLogger = exports.logDebugWithCore = exports.logInfoWithCore = exports.logWarnWithCore = exports.logErrorWithCore = exports.logSystemWithCore = exports.createCoreSystemLogger = exports.CoreLoggerBridge = exports.createConfiguredLogger = exports.resetServiceLoggingManager = exports.getServiceLoggingManager = exports.createServiceLoggingManager = exports.ServiceLoggingManager = exports.DEFAULT_LOGGING_SERVICE_CONFIG = exports.ServiceLoggingConfigurationLoader = exports.loadServiceLoggingConfigurationWithSources = exports.loadServiceLoggingConfiguration = exports.LoggingError = void 0; exports.createLogger = createLogger; exports.audit = audit; exports.system = system; // Fail hard if this package is imported in a browser context if (typeof window !== 'undefined' && typeof window.document !== 'undefined') { throw new Error('[@bernierllc/logging] This logging package cannot be used in the browser. It is server-only and must only be imported in API or server-side code.'); } // Export types __exportStar(require("./types"), exports); __exportStar(require("./config/types"), exports); // Export error types var errors_1 = require("./errors"); Object.defineProperty(exports, "LoggingError", { enumerable: true, get: function () { return errors_1.LoggingError; } }); // Export configuration management var loadConfiguration_1 = require("./config/loadConfiguration"); Object.defineProperty(exports, "loadServiceLoggingConfiguration", { enumerable: true, get: function () { return loadConfiguration_1.loadServiceLoggingConfiguration; } }); Object.defineProperty(exports, "loadServiceLoggingConfigurationWithSources", { enumerable: true, get: function () { return loadConfiguration_1.loadServiceLoggingConfigurationWithSources; } }); Object.defineProperty(exports, "ServiceLoggingConfigurationLoader", { enumerable: true, get: function () { return loadConfiguration_1.ServiceLoggingConfigurationLoader; } }); Object.defineProperty(exports, "DEFAULT_LOGGING_SERVICE_CONFIG", { enumerable: true, get: function () { return loadConfiguration_1.DEFAULT_LOGGING_SERVICE_CONFIG; } }); // Export service logging manager (PREFERRED - NEW API) var serviceLoggingManager_1 = require("./serviceLoggingManager"); Object.defineProperty(exports, "ServiceLoggingManager", { enumerable: true, get: function () { return serviceLoggingManager_1.ServiceLoggingManager; } }); Object.defineProperty(exports, "createServiceLoggingManager", { enumerable: true, get: function () { return serviceLoggingManager_1.createServiceLoggingManager; } }); Object.defineProperty(exports, "getServiceLoggingManager", { enumerable: true, get: function () { return serviceLoggingManager_1.getServiceLoggingManager; } }); Object.defineProperty(exports, "resetServiceLoggingManager", { enumerable: true, get: function () { return serviceLoggingManager_1.resetServiceLoggingManager; } }); Object.defineProperty(exports, "createConfiguredLogger", { enumerable: true, get: function () { return serviceLoggingManager_1.createConfiguredLogger; } }); // Export core logger bridge var coreLoggerBridge_1 = require("./coreLoggerBridge"); Object.defineProperty(exports, "CoreLoggerBridge", { enumerable: true, get: function () { return coreLoggerBridge_1.CoreLoggerBridge; } }); Object.defineProperty(exports, "createCoreSystemLogger", { enumerable: true, get: function () { return coreLoggerBridge_1.createCoreSystemLogger; } }); Object.defineProperty(exports, "logSystemWithCore", { enumerable: true, get: function () { return coreLoggerBridge_1.logSystemWithCore; } }); Object.defineProperty(exports, "logErrorWithCore", { enumerable: true, get: function () { return coreLoggerBridge_1.logErrorWithCore; } }); Object.defineProperty(exports, "logWarnWithCore", { enumerable: true, get: function () { return coreLoggerBridge_1.logWarnWithCore; } }); Object.defineProperty(exports, "logInfoWithCore", { enumerable: true, get: function () { return coreLoggerBridge_1.logInfoWithCore; } }); Object.defineProperty(exports, "logDebugWithCore", { enumerable: true, get: function () { return coreLoggerBridge_1.logDebugWithCore; } }); // Export legacy Winston-based functionality (BACKWARD COMPATIBILITY) var auditLogger_1 = require("./auditLogger"); Object.defineProperty(exports, "createAuditLogger", { enumerable: true, get: function () { return auditLogger_1.createAuditLogger; } }); Object.defineProperty(exports, "logAudit", { enumerable: true, get: function () { return auditLogger_1.logAudit; } }); Object.defineProperty(exports, "logAuditEntry", { enumerable: true, get: function () { return auditLogger_1.logAuditEntry; } }); var systemLogger_1 = require("./systemLogger"); Object.defineProperty(exports, "createSystemLogger", { enumerable: true, get: function () { return systemLogger_1.createSystemLogger; } }); Object.defineProperty(exports, "logSystem", { enumerable: true, get: function () { return systemLogger_1.logSystem; } }); Object.defineProperty(exports, "logError", { enumerable: true, get: function () { return systemLogger_1.logError; } }); Object.defineProperty(exports, "logWarn", { enumerable: true, get: function () { return systemLogger_1.logWarn; } }); Object.defineProperty(exports, "logInfo", { enumerable: true, get: function () { return systemLogger_1.logInfo; } }); Object.defineProperty(exports, "logDebug", { enumerable: true, get: function () { return systemLogger_1.logDebug; } }); Object.defineProperty(exports, "logSystemEntry", { enumerable: true, get: function () { return systemLogger_1.logSystemEntry; } }); // Export Winston for advanced usage var winston_1 = require("winston"); Object.defineProperty(exports, "winston", { enumerable: true, get: function () { return __importDefault(winston_1).default; } }); // Export browser logger (conditional) var browserLogger_1 = require("./browserLogger"); Object.defineProperty(exports, "createBrowserLogger", { enumerable: true, get: function () { return browserLogger_1.createBrowserLogger; } }); // ============================================= // RUNTIME CONFIGURATION INTEGRATION // ============================================= let serviceManager = null; /** * Get or create the global service logging manager with runtime configuration * This is the PREFERRED way to use the logging service */ async function getOrCreateServiceManager() { if (!serviceManager) { const { createServiceLoggingManager } = await Promise.resolve().then(() => __importStar(require('./serviceLoggingManager'))); serviceManager = createServiceLoggingManager(); } return serviceManager; } /** * Create configured logger with runtime configuration * This replaces the old default logger instances */ async function createLogger(runtimeConfig) { const { createServiceLoggingManager } = await Promise.resolve().then(() => __importStar(require('./serviceLoggingManager'))); const manager = await createServiceLoggingManager(runtimeConfig); return { // Preferred core logger interface core: manager.getCoreLogger(), // Service manager for full control manager, // Winston compatibility system: manager.getSystemLogger(), auditLogger: manager.getAuditLogger(), bridge: manager.getCoreLoggerBridge(), // Convenience methods error: (message, error, metadata) => manager.error(message, error, metadata), warn: (message, metadata) => manager.warn(message, metadata), info: (message, metadata) => manager.info(message, metadata), debug: (message, metadata) => manager.debug(message, metadata), audit: (entry) => manager.audit(entry) }; } // ============================================= // BACKWARD COMPATIBILITY (LEGACY API) // ============================================= // Legacy default logger instances (will be deprecated) const auditLogger_2 = require("./auditLogger"); const systemLogger_2 = require("./systemLogger"); /** * @deprecated Use createLogger() with runtime configuration instead * Default audit logger instance - will be replaced by runtime configuration */ exports.defaultAuditLogger = (0, auditLogger_2.createAuditLogger)({ enableFile: true, filePath: './logs/audit.log' }); /** * @deprecated Use createLogger() with runtime configuration instead * Default system logger instance - will be replaced by runtime configuration */ exports.defaultSystemLogger = (0, systemLogger_2.createSystemLogger)({ level: process.env.LOG_LEVEL || 'info', enableConsole: process.env.NODE_ENV !== 'production', enableFile: true, filePath: './logs/app.log', maxSize: '10m', maxFiles: '5', zippedArchive: true }); /** * @deprecated Use createLogger().audit() instead * Convenience function to log audit events using default logger */ function audit(entry) { (0, auditLogger_2.logAudit)(exports.defaultAuditLogger, entry); } /** * @deprecated Use createLogger().system() instead * Convenience function to log system events using default logger */ function system(entry) { (0, systemLogger_2.logSystem)(exports.defaultSystemLogger, entry); } /** * @deprecated Use createLogger() for configured logging instead * Legacy convenience logger - will be replaced by runtime configuration */ exports.logger = { error: (message, error, metadata) => (0, systemLogger_2.logError)(exports.defaultSystemLogger, message, error, metadata), warn: (message, metadata) => (0, systemLogger_2.logWarn)(exports.defaultSystemLogger, message, metadata), info: (message, metadata) => (0, systemLogger_2.logInfo)(exports.defaultSystemLogger, message, metadata), debug: (message, metadata) => (0, systemLogger_2.logDebug)(exports.defaultSystemLogger, message, metadata), audit: (entry) => audit(entry) }; // ============================================= // MIGRATION GUIDE EXPORT // ============================================= /** * Migration guide for upgrading to runtime configuration */ exports.MIGRATION_GUIDE = { /** * Old way (deprecated): * import { logger } from '@bernierllc/logging'; * logger.info('Hello world'); * * New way (recommended): * import { createLogger } from '@bernierllc/logging'; * const logger = await createLogger(); * logger.info('Hello world'); * * Or with custom configuration: * const logger = await createLogger({ * level: 'debug', * system: { console: { enabled: true } } * }); */ example: ` // Before (legacy) import { logger } from '@bernierllc/logging'; logger.info('Application started'); // After (with runtime configuration) import { createLogger } from '@bernierllc/logging'; const logger = await createLogger(); logger.info('Application started'); // Or with service manager (full control) import { createServiceLoggingManager } from '@bernierllc/logging'; const manager = await createServiceLoggingManager(); manager.info('Application started'); ` }; //# sourceMappingURL=index.js.map