Skip to content

c4lyp5o/deadslog

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

63 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

deadslog

CI & Publish GitHub issues GitHub pull requests codecov npm npm GitHub

A dead simple logger module for Node.js. Provides console and file-based logging with support for log rotation, custom formatting, colored output, and robust error handling.

✨ Features

  • πŸ–₯ Console and file logging
  • πŸ”„ Log rotation with delete/archive strategies
  • 🧩 Customizable log formatting
  • 🌈 Colored log levels in console
  • 🧱 Handles undefined/non-serializable messages
  • 🧠 TypeScript type definitions included
  • πŸ” ESM + CommonJS support

πŸ“¦ Installation

npm install deadslog
# or
bun add deadslog

πŸš€ Usage

πŸ”Ή Basic

import deadslog from "deadslog";
const logger = deadslog();
logger.info("Hello, world!");

🎨 With Custom Formatter

const logger = deadslog({
  formatter: (level, message) => {
    const timestamp = new Date().toLocaleString();
    return `---\nTime: ${timestamp}\nLevel: ${level}\nMessage: ${message}\n---`;
  },
});
logger.info("Custom formatted log!");

πŸ“ File Logging & Rotation

const logger = deadslog({
  fileOutput: {
    enabled: true,
    logFilePath: "./logs/app.log",
    rotate: true,
    maxLogSize: 1024 * 1024, // 1MB
    maxLogFiles: 3,
    onMaxLogFilesReached: "archiveOld", // or "deleteOld"
  },
});
logger.info("This will be written to a file!");

πŸ“¦ CommonJS Usage

const deadslog = require("deadslog");
const logger = deadslog();
logger.info("Hello from CJS!");

πŸ“˜ API

deadslog(config)

Returns a logger instance.

βš™οΈ Configuration Options

Option Type Description
consoleOutput.enabled boolean Enable console logging (default: true)
consoleOutput.coloredCoding boolean Enable colored output using chalk (default: true)
fileOutput.enabled boolean Enable file logging (default: false)
fileOutput.logFilePath string File path for log output (required if file logging is enabled)
fileOutput.rotate boolean Enable automatic log file rotation
fileOutput.maxLogSize number Maximum log file size in bytes before rotation
fileOutput.maxLogFiles number Number of rotated files to keep
fileOutput.onMaxLogFilesReached string Rotation strategy: "deleteOld" or "archiveOld"
formatter function Optional custom formatter for log messages
minLevel string Minimum log level: trace, debug, info, success, warn, error, fatal
filters.include string Word filter to include from log
filters.exclude string Word filter to exclude from log

🧰 Logger Methods

  • trace(msg)
  • debug(msg)
  • info(msg)
  • success(msg)
  • warn(msg)
  • error(msg)
  • fatal(msg)
  • flush()
  • destroy()

🧠 TypeScript

Type definitions are included and will be picked up automatically.

πŸ“š Formatter Examples For Use

🧾 1. Simple Timestamp Formatter

const simpleFormatter = (level, message) => {
  const timestamp = new Date().toISOString();
  return `[${timestamp}] [${level}] ${message}`;
};
[2025-05-03T13:45:21.123Z] [INFO] Application started

πŸ“œ 2. Multiline Developer-Friendly Formatter

const multilineFormatter = (level, message) => {
  const timestamp = new Date().toLocaleString();
  return `---\nTime: ${timestamp}\nLevel: ${level}\nMessage: ${message}\n---`;
};
---
Time: 5/3/2025, 1:46:11 PM
Level: DEBUG
Message: Connected to database
---

πŸ“ 3. File-Friendly CSV Formatter

const csvFormatter = (level, message) => {
  const timestamp = new Date().toISOString();
  const escaped = message.replace(/"/g, '""');
  return `"${timestamp}","${level}","${escaped}"`;
};
"2025-05-03T13:47:02.789Z","ERROR","Failed to load module: ""auth.js"""

🌈 4. Emoji-Coded Formatter

const emojiFormatter = (level, message) => {
  const emojis = {
    trace: 'πŸ”',
    debug: 'πŸ›',
    info: 'ℹ️',
    success: 'βœ…',
    warn: '⚠️',
    error: '❌',
    fatal: 'πŸ’€'
  };
  const timestamp = new Date().toISOString();
  return `${emojis[level] || ''} [${timestamp}] ${level}: ${message}`;
};
βœ… [2025-05-03T13:48:15.456Z] SUCCESS: Task completed

πŸͺ΅ 5. JSONL (JSON Lines) Formatter for Parsing

const jsonlFormatter = (level, message) => {
  return JSON.stringify({
    ts: Date.now(),
    level,
    message
  });
};
{"ts":1714740493123,"level":"INFO","message":"Something happened"}

Changelog

[v1.2.2] - 2025-05-24

Fixed

  • Types file was not included in the package, causing issues for TypeScript users.

See CHANGELOG.md for previous versions and more details.

License

MIT

About

A dead simple logger module for Node.js.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published