log-mate
v1.1.0
Published
log-mate makes logging effortless & powerful—log to console, files, databases, or cloud with structured logs, encryption, real-time streaming, and auto-rotation. It’s plug & play, supports multi-transport logging, and boosts performance with async, lazy l
Maintainers
Readme
log-mate
A flexible and powerful logging library for Node.js
log-mate makes logging effortless & powerful—log to console, files, databases, or cloud with structured logs, encryption, real-time streaming, and auto-rotation. It’s plug & play, supports multi-transport logging, and boosts performance with async, lazy logging, and batching. Plus, it keeps your data secure with masking & encryption—perfect for everything from debugging to production!
📖 Overview
log-mate is a lightweight yet feature-rich logging library for Node.js applications. It provides structured logging, multiple log levels, customizable transports (console, file, database, cloud), log rotation, contextual logging, encryption, and real-time log streaming.
✅ Highly configurable – Customize output formats, storage, and integrations.
✅ Multi-transport support – Log to console, files, databases, cloud, or webhooks.
✅ Structured logging – Supports JSON and other formats.
✅ Contextual logging – Add metadata, user IDs, and request contexts.
✅ Optimized for performance – Lazy evaluation, batching, and async logging.
✅ Secure logging – Mask sensitive data and encrypt logs.
📦 Installation
Install log-mate via npm:
npm install log-mateor via yarn:
yarn add log-mate🚀 Usage
Basic Example
const logme = require('log-mate');
logme.trace("This is a trace message");
logme.debug("Debugging details here");
logme.info("Informational message");
logme.warn("This is a warning!");
logme.error("Something went wrong!", { code: 500, details: "Internal Server Error" });
logme.fatal("Critical failure! Shutting down...");
logme.custom("info", "User logged in"); Logging to a File
logme.toFile("logs/app.log", { rotation: true });
logme.info("This will be logged to a file.");Logging to a Database
logme.toDatabase({
host: "localhost",
user: "root",
password: "password",
database: "logs",
});
logme.info("This message will be stored in the database");Logging to Cloud (AWS, GCP, Azure)
logme.toCloud("aws", { bucket: "my-log-bucket" });
logme.error("Logging error to the cloud");Masking Sensitive Data
logme.maskSensitive(["password", "token"]);
logme.info("User logged in with password: 123456 and token: abcdefg");
// OUTPUT: [INFO] User logged in with password: ****** and token: ******Streaming Logs in Real-Time
logme.enableStreaming(3000); // Streams logs over WebSocket at port 3000
logme.info("Streaming logs in real-time...");Encrypted Logging
logme.encrypt("my-secret-key");
logme.info("This log is now encrypted!");Batch Logging
logme.setBatchSize(5);
logme.info("Log message 1");
logme.info("Log message 2");
logme.flush(); // Manually flush logs before batch size is reachedLog Rotation
logme.enableRotation({ maxSize: 1024 * 1024, maxFiles: 3 }); // Rotate at 1MB, keep 3 files
logme.info("This log will be rotated when it reaches max size");Contextual Logging
logme.setContext({ userId: "1234", sessionId: "abcd" });
logme.info("User performed an action");
// OUTPUT: [INFO] [userId:1234] [sessionId:abcd] User performed an actionNamespace (Scoped) Logging
const authLogger = logme.get("auth");
authLogger("INFO", "User logged in");
// Output: [auth] [INFO] User logged inUsing Plugins
logme.use((message) => console.log(`[PLUGIN] ${message}`));
logme.info("This log passes through a plugin");CLI Usage
node index.js view logs.txt # View log file
node index.js clear logs.txt # Clear log file📜 API Reference
1️⃣ Core Logging Functions
| Function | Description |
|------------------------------|----------------|
| logme.trace(message, ...args) | Logs a trace message (detailed debugging). |
| logme.debug(message, ...args) | Logs a debug message. |
| logme.info(message, ...args) | Logs an informational message. |
| logme.notice(message, ...args) | Logs a notice message. |
| logme.warn(message, ...args) | Logs a warning message. |
| logme.error(message, ...args) | Logs an error message. |
| logme.fatal(message, ...args) | Logs a fatal error message. |
| logme.custom(level, message, ...args) | Logs with a custom log level. |
2️⃣ Log Output & Transport
| Function | Description |
|------------------------------------|----------------|
| logme.toConsole(enable = true) | Enables/disables console logging. |
| logme.toFile(filepath, options) | Logs messages to a file. |
| logme.toDatabase(dbConfig) | Logs messages to a database. |
| logme.toCloud(service, options) | Sends logs to AWS, GCP, Azure, etc. |
| logme.toWebhook(url, options) | Sends logs to a webhook URL. |
3️⃣ Formatting & Encryption
| Function | Description |
|------------------------------------|----------------|
| logme.setFormat(type) | Sets log format (json, yaml, text). |
| logme.maskSensitive(keys) | Masks sensitive data (e.g., passwords). |
| logme.encrypt(key) | Encrypts logs using AES-256. |
4️⃣ Log Rotation & Performance
| Function | Description |
|------------------------------------|----------------|
| logme.enableRotation(options) | Enables automatic log rotation. |
| logme.setBatchSize(size) | Sets batch size for buffered logging. |
| logme.flush() | Flushes all batched logs immediately. |
5️⃣ Namespacing & Contextual Logging
| Function | Description |
|-----------------------------------|----------------|
| logme.get(namespace) | Creates a namespaced logger (log.get("auth")). |
| logme.setContext(contextObject) | Adds metadata/context to logs. |
6️⃣ Advanced Features
| Function | Description |
|------------------------------------|----------------|
| logme.enableStreaming(port) | Streams logs in real-time via WebSocket. |
| logme.lazy(() => message) | Lazy logging (evaluates message only if needed). |
| logme.retry(attempts, delay) | Retries failed log writes automatically. |
7️⃣ CLI & Plugins
| Function | Description |
|-----------------------------------|----------------|
| logme.use(plugin) | Loads a plugin (e.g., Slack, Sentry). |
| logme.cli() | Provides CLI commands (log-mate view, log-mate clear). |
🛠 Configuration Example
const logme = require("log-mate");
logme.setConfig({
level: "debug",
format: "json",
transports: [
{ type: "console" },
{ type: "file", path: "logs/app.log" }
],
maskSensitive: ["password", "email"],
encrypt: true
});
console.log(logme.getConfig()); // Check updated config📌 Features Comparison
| Feature | log-mate | Other Loggers | |------------------------|----------|--------------| | Log Levels | ✅ Yes | ✅ Yes | | File Logging | ✅ Yes | ✅ Yes | | Database Logging | ✅ Yes | ❌ No | | Cloud Integration | ✅ Yes | ❌ No | | Real-time Streaming | ✅ Yes | ❌ No | | Log Encryption | ✅ Yes | ❌ No | | Lazy Logging | ✅ Yes | ❌ No | | Custom Log Levels | ✅ Yes | ✅ Yes |
🤝 Contributing
Contributions are welcome! If you have suggestions or want to add features:
- Fork the repo
- Create a new branch (
feature-name) - Commit your changes
- Submit a Pull Request
