UNPKG

strogger

Version:

šŸ“Š A modern structured logging library with functional programming, duck-typing, and comprehensive third-party integrations

202 lines • 9.06 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.demonstrateEnvironmentSpecificFileTransport = exports.demonstrateCustomFileTransport = exports.demonstrateMultipleFileTransports = exports.demonstrateFileTransportWithSymlink = exports.demonstrateCompressedFileTransport = exports.demonstrateBasicFileTransport = exports.runFileTransportExamples = void 0; const index_1 = require("../index"); // File Transport Usage Examples: Demonstrates the production-ready file transport with various configurations. // Example 1: Basic File Transport const demonstrateBasicFileTransport = () => { console.log("=== Basic File Transport ===\n"); const env = (0, index_1.getEnvironment)(); const formatter = (0, index_1.createJsonFormatter)(); const fileTransport = (0, index_1.createFileTransport)({ level: index_1.LogLevel.INFO, filePath: "./logs/basic-app.log", maxFileSize: 5 * 1024 * 1024, // 5MB maxFiles: 3, }); const strogger = (0, index_1.createLogger)({ config: { serviceName: "basic-file-example", stage: env.stage }, transports: [fileTransport], formatter, env, }); strogger.info("Application started with basic file transport"); strogger.warn("This is a warning message"); strogger.error("This is an error message", { userId: "user-123" }); return strogger; }; exports.demonstrateBasicFileTransport = demonstrateBasicFileTransport; // Example 2: File Transport with Compression const demonstrateCompressedFileTransport = () => { console.log("\n=== File Transport with Compression ===\n"); const env = (0, index_1.getEnvironment)(); const formatter = (0, index_1.createJsonFormatter)(); const compressedFileTransport = (0, index_1.createFileTransport)({ level: index_1.LogLevel.DEBUG, filePath: "./logs/compressed-app.log", maxFileSize: 10 * 1024 * 1024, // 10MB maxFiles: 5, compressOldFiles: true, // Enable compression rotationInterval: 12 * 60 * 60 * 1000, // 12 hours }); const strogger = (0, index_1.createLogger)({ config: { serviceName: "compressed-file-example", stage: env.stage }, transports: [compressedFileTransport], formatter, env, }); strogger.info("Application started with compressed file transport"); strogger.debug("Debug message with compression enabled"); strogger.warn("Warning message", { component: "file-transport" }); return strogger; }; exports.demonstrateCompressedFileTransport = demonstrateCompressedFileTransport; // Example 3: File Transport with Symlink const demonstrateFileTransportWithSymlink = () => { console.log("\n=== File Transport with Symlink ===\n"); const env = (0, index_1.getEnvironment)(); const formatter = (0, index_1.createJsonFormatter)(); const symlinkFileTransport = (0, index_1.createFileTransport)({ level: index_1.LogLevel.INFO, filePath: "./logs/symlink-app.log", maxFileSize: 8 * 1024 * 1024, // 8MB maxFiles: 4, createSymlink: true, // Create symlink to current log file symlinkName: "current.log", }); const strogger = (0, index_1.createLogger)({ config: { serviceName: "symlink-file-example", stage: env.stage }, transports: [symlinkFileTransport], formatter, env, }); strogger.info("Application started with symlink file transport"); strogger.info("Current log file is always accessible via ./logs/current.log"); return strogger; }; exports.demonstrateFileTransportWithSymlink = demonstrateFileTransportWithSymlink; // Example 4: Multiple File Transports const demonstrateMultipleFileTransports = () => { console.log("\n=== Multiple File Transports ===\n"); const env = (0, index_1.getEnvironment)(); const formatter = (0, index_1.createJsonFormatter)(); // Error-only file transport const errorFileTransport = (0, index_1.createFileTransport)({ level: index_1.LogLevel.ERROR, filePath: "./logs/errors.log", maxFileSize: 2 * 1024 * 1024, // 2MB maxFiles: 10, // Keep more error logs compressOldFiles: true, }); // Debug file transport const debugFileTransport = (0, index_1.createFileTransport)({ level: index_1.LogLevel.DEBUG, filePath: "./logs/debug.log", maxFileSize: 20 * 1024 * 1024, // 20MB maxFiles: 2, rotationInterval: 6 * 60 * 60 * 1000, // 6 hours }); const strogger = (0, index_1.createLogger)({ config: { serviceName: "multi-file-example", stage: env.stage }, transports: [errorFileTransport, debugFileTransport], formatter, env, }); strogger.debug("Debug message - goes to debug.log"); strogger.info("Info message - goes to both files"); strogger.warn("Warning message - goes to both files"); strogger.error("Error message - goes to both files, but errors.log keeps more history"); return strogger; }; exports.demonstrateMultipleFileTransports = demonstrateMultipleFileTransports; // Example 5: File Transport with Custom Configuration const demonstrateCustomFileTransport = () => { console.log("\n=== Custom File Transport Configuration ===\n"); const env = (0, index_1.getEnvironment)(); const formatter = (0, index_1.createJsonFormatter)(); const customFileTransport = (0, index_1.createFileTransport)({ level: index_1.LogLevel.INFO, filePath: "./logs/custom-app.log", maxFileSize: 15 * 1024 * 1024, // 15MB maxFiles: 7, compressOldFiles: true, rotationInterval: 24 * 60 * 60 * 1000, // 24 hours dateFormat: "YYYY-MM-DD", encoding: "utf8", createSymlink: true, symlinkName: "latest.log", }); const strogger = (0, index_1.createLogger)({ config: { serviceName: "custom-file-example", stage: env.stage }, transports: [customFileTransport], formatter, env, }); strogger.info("Application started with custom file transport configuration"); strogger.info("This transport uses custom settings for rotation and compression"); // Demonstrate transport methods console.log("Current file:", customFileTransport.getCurrentFile()); console.log("Current size:", customFileTransport.getCurrentSize()); console.log("Transport config:", customFileTransport.getConfig()); console.log("Transport stats:", customFileTransport.getStats()); return strogger; }; exports.demonstrateCustomFileTransport = demonstrateCustomFileTransport; // Example 6: Environment-Specific File Transport const demonstrateEnvironmentSpecificFileTransport = () => { console.log("\n=== Environment-Specific File Transport ===\n"); const env = (0, index_1.getEnvironment)(); const formatter = (0, index_1.createJsonFormatter)(); // Different configurations for different environments const fileTransportConfig = env.isProduction ? { level: index_1.LogLevel.INFO, filePath: "/var/log/production-app.log", maxFileSize: 50 * 1024 * 1024, // 50MB maxFiles: 10, compressOldFiles: true, createSymlink: true, symlinkName: "production-current.log", } : { level: index_1.LogLevel.DEBUG, filePath: "./logs/dev-app.log", maxFileSize: 5 * 1024 * 1024, // 5MB maxFiles: 3, compressOldFiles: false, }; const fileTransport = (0, index_1.createFileTransport)(fileTransportConfig); const strogger = (0, index_1.createLogger)({ config: { serviceName: "env-specific-file-example", stage: env.stage }, transports: [fileTransport], formatter, env, }); strogger.info(`Application started in ${env.stage} environment`); strogger.info(`Using ${env.isProduction ? "production" : "development"} file transport configuration`); return strogger; }; exports.demonstrateEnvironmentSpecificFileTransport = demonstrateEnvironmentSpecificFileTransport; // Run all examples const runFileTransportExamples = async () => { console.log("šŸš€ Running File Transport Examples\n"); try { demonstrateBasicFileTransport(); demonstrateCompressedFileTransport(); demonstrateFileTransportWithSymlink(); demonstrateMultipleFileTransports(); demonstrateCustomFileTransport(); demonstrateEnvironmentSpecificFileTransport(); console.log("\nāœ… All file transport examples completed!"); console.log("\nšŸ“ Check the ./logs directory for generated log files"); } catch (error) { console.error("āŒ Error running examples:", error); } }; exports.runFileTransportExamples = runFileTransportExamples; // Run examples if this file is executed directly if (require.main === module) { (0, exports.runFileTransportExamples)().catch(console.error); } //# sourceMappingURL=file-transport-usage.js.map