strogger
Version:
📊 A modern structured logging library with functional programming, duck-typing, and comprehensive third-party integrations
52 lines • 2.04 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.stroggerWithFileTransport = exports.createFileTransportExample = void 0;
const index_1 = require("../index");
// File Transport Example: Demonstrates a mock file transport with log rotation logic (no real file I/O).
// Mock file transport with rotation logic
const createFileTransportExample = (options = {}) => {
let minLevel = options.level ?? index_1.LogLevel.INFO;
const maxFileSize = options.maxFileSize ?? 10 * 1024 * 1024;
const rotationInterval = options.rotationInterval ?? 24 * 60 * 60 * 1000;
let currentSize = 0;
let lastRotation = Date.now();
const shouldRotate = () => currentSize >= maxFileSize || Date.now() - lastRotation >= rotationInterval;
const rotate = async () => {
currentSize = 0;
lastRotation = Date.now();
console.log("[MOCK FILE] Rotated log file");
};
const writeToFile = async (content) => {
if (shouldRotate())
await rotate();
currentSize += content.length;
console.log(`[MOCK FILE] Writing: ${content}`);
};
return {
log: async (entry) => {
if (entry.level < minLevel)
return;
const logLine = JSON.stringify(entry);
await writeToFile(logLine);
},
setLevel: (level) => {
minLevel = level;
},
getLevel: () => minLevel,
};
};
exports.createFileTransportExample = createFileTransportExample;
// Minimal logger usage with mock file transport
const env = (0, index_1.getEnvironment)();
const formatter = (0, index_1.createJsonFormatter)();
const fileTransport = (0, exports.createFileTransportExample)({
maxFileSize: 1024, // 1KB for demo
rotationInterval: 10000, // 10s for demo
});
exports.stroggerWithFileTransport = (0, index_1.createLogger)({
config: { serviceName: "file-rotation-example" },
transports: [fileTransport],
formatter,
env,
});
//# sourceMappingURL=file-transport-example.js.map