@bernierllc/logging
Version:
A comprehensive logging package with Winston integration for audit and system logging
234 lines (231 loc) • 13.5 kB
JavaScript
;
/*
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