strogger
Version:
📊 A modern structured logging library with functional programming, duck-typing, and comprehensive third-party integrations
52 lines • 2.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.loggerWithCloudWatchTransport = exports.createCloudWatchTransportExample = void 0;
const index_1 = require("../index");
// CloudWatch Transport Example: Demonstrates a mock CloudWatch transport with log rotation logic (no AWS SDK).
const createCloudWatchTransportExample = (options = {}) => {
let minLevel = options.level ?? index_1.LogLevel.INFO;
const maxStreamSize = options.maxStreamSize ?? 45 * 1024 * 1024;
const maxStreamAge = options.maxStreamAge ?? 23 * 60 * 60 * 1000;
let currentSize = 0;
let streamStartTime = Date.now();
const shouldRotate = () => currentSize >= maxStreamSize ||
Date.now() - streamStartTime >= maxStreamAge;
const rotate = async () => {
currentSize = 0;
streamStartTime = Date.now();
console.log("[MOCK CW] Rotated log stream");
};
const sendToCloudWatch = async (content) => {
if (shouldRotate())
await rotate();
currentSize += content.length;
console.log(`[MOCK CW] Sending: ${content}`);
};
return {
log: async (entry) => {
if (entry.level < minLevel)
return;
const logLine = JSON.stringify(entry);
await sendToCloudWatch(logLine);
},
setLevel: (level) => {
minLevel = level;
},
getLevel: () => minLevel,
};
};
exports.createCloudWatchTransportExample = createCloudWatchTransportExample;
// Minimal logger usage with mock CloudWatch transport
const env = (0, index_1.getEnvironment)();
const formatter = (0, index_1.createJsonFormatter)();
const cloudWatchTransport = (0, exports.createCloudWatchTransportExample)({
maxStreamSize: 1024, // 1KB for demo
maxStreamAge: 10000, // 10s for demo
});
exports.loggerWithCloudWatchTransport = (0, index_1.createLogger)({
config: { serviceName: "cloudwatch-rotation-example" },
transports: [cloudWatchTransport],
formatter,
env,
});
//# sourceMappingURL=cloudwatch-transport-example.js.map