@craftycodesmith/plug-and-play-logger
v1.0.8
Published
A zero-config stream-intercepting logger for Node.js
Readme
@craftycodesmith/plug-and-play-logger
A high-performance, zero-dependency Node.js logging utility. It provides "set-and-forget" stream interception, allowing you to record all console.log and console.error output directly to organized, rotated files on your server.
Key Features
- Zero-Code Integration: Intercepts
stdoutandstderrautomatically. No need to replace existingconsolecalls. - Timestamp Caching: Optimized performance by caching the ISO timestamp string and updating it once per second to save CPU cycles.
- Buffered Writing: Reduces Disk I/O by batching log entries in memory before flushing to the file system.
- Log Rotation: Automatically rotates files when they exceed 10MB to prevent disk exhaustion.
- Fail-Safe: Uses asynchronous streams to ensure the main application event loop remains non-blocking.
Installation
npm install @craftycodesmith/plug-and-play-loggerQuick Start
For Node.js / Express
Initialize the logger at the very top of your entry file (e.g., app.js or index.js).
const { PlugPlayLogger } = require("@craftycodesmith/plug-and-play-logger");
PlugPlayLogger.init({
dir: "./logs", // Directory for log files
filename: "app.log", // Current log file name
intercept: true, // Automatically capture console.log and console.error
});
console.log(
"This message and all subsequent console logs will be saved to the file."
);For NestJS
Add the initialization to your main.ts file before the application bootstrap. This ensures that even the internal NestJS startup logs are captured.
import { NestFactory } from "@nestjs/core";
import { AppModule } from "./app.module";
import { PlugPlayLogger } from "@craftycodesmith/plug-and-play-logger";
async function bootstrap() {
// Initialize logger before creating the Nest application
PlugPlayLogger.init({
dir: "./logs",
filename: "nest-app.log",
intercept: true, // Captures all NestJS system logs and console outputs
});
const app = await NestFactory.create(AppModule);
// Optional: Set up global prefix or other Nest configurations
await app.listen(3000);
console.log(`Application is running on: ${await app.getUrl()}`);
}
bootstrap();