auto-logmonitor
Version:
A robust, production-ready CLI for log monitoring with API/Kafka output, SMTP email alerts, disk-based queue with optional compression, dead-letter queue, metrics, and full config via file or environment variables. Recent improvements: SMTP alerting, disk
60 lines (52 loc) โข 1.4 kB
JavaScript
let successCount = 0;
let failureCount = 0;
let retryCount = 0;
let queueSize = 0;
let lastSuccessTime = null;
let peakQueueSize = 0;
function logSuccess() {
successCount++;
lastSuccessTime = new Date();
}
function logFailure() {
failureCount++;
}
function logRetry() {
retryCount++;
}
function updateQueueSize(size) {
queueSize = size;
peakQueueSize = Math.max(peakQueueSize, size);
}
function getQueueStats() {
return {
success: successCount,
failures: failureCount,
retries: retryCount,
current: queueSize,
peak: peakQueueSize,
lastSuccess: lastSuccessTime
};
}
function printMetrics() {
const now = new Date();
const memUsage = process.memoryUsage();
console.log(`
๐ METRICS ${now.toISOString()}:
โโโ Success: ${successCount} โ
โโโ Failures: ${failureCount} โ
โโโ Retries: ${retryCount} ๐
โโโ Queue: ${queueSize} items ๐งต (Peak: ${peakQueueSize})
โโโ Last Success: ${lastSuccessTime ? `${Math.round((now - lastSuccessTime)/1000)}s ago` : 'Never'} โฑ
โโโ Memory: ${Math.round(memUsage.rss / 1024 / 1024)}MB RSS ๐
โโโ Uptime: ${Math.floor(process.uptime() / 60)}m ${Math.floor(process.uptime() % 60)}s โณ
`);
}
module.exports = {
logSuccess,
logFailure,
logRetry,
updateQueueSize,
getQueueStats,
printMetrics
};