A lightweight, flexible logging library with color support, timestamps, and timer functionality. This logger supports multiple log levels and allows for easy extension and integration into any project.
- Multiple Log Levels: Supports
INFO
,ERROR
,WARN
, andDEBUG
log levels - Colored Output: Configurable colors for different log levels in both browser and Node.js environments
- Timestamps: Optional timestamps with configurable formats
- Timer Support: Built-in timer functionality for performance measurements
- Debug Utilities: Helper methods for conditional debug operations
- Prefixed Messages: Customizable prefix for all log messages
- Environment Detection: Automatically adapts output format for browser or Node.js environments
- Extensible: Easy to extend with custom functionality
npm install @ecopages/logger
# or
yarn add @ecopages/logger
# or
bun add @ecopages/logger
import { Logger } from "@ecopages/logger";
// Create a basic logger
const logger = new Logger("[my-app]");
// Log messages at different levels
logger.info("This is an informational message");
logger.warn("This is a warning message");
logger.error("This is an error message");
logger.debug("This is a debug message"); // Only shown if debug is enabled
The logger supports various configuration options:
const logger = new Logger("[my-app]", {
debug: true, // Enable debug messages
color: true, // Enable colored output
timestamp: true, // Add timestamps to messages
timestampFormat: "full", // Configure timestamp format
verboseTimer: true, // Show timer start messages
colors: {
// Custom colors
INFO: "color: purple",
ERROR: "color: darkred",
},
});
Option | Type | Default | Description |
---|---|---|---|
debug |
boolean | false |
Enable debug level messages |
color |
boolean | true |
Enable colored output |
timestamp |
boolean | false |
Add timestamps to messages |
timestampFormat |
"full" | "time" | "short" | "time" | Timestamp format |
verboseTimer |
boolean | false |
Show timer start messages |
colors |
Partial | - | Custom colors for log levels |
full
:YYYY-MM-DD HH:mm:ss
time
:HH:mm:ss
short
:MM-DD HH:mm:ss
// Start a timer
logger.time("operation");
// ... some operations ...
// End the timer and log duration
logger.timeEnd("operation");
The logger provides several debug-specific methods:
// Check if debug mode is enabled
if (logger.isDebugEnabled()) {
// Perform debug-only operations
}
// Start a timer only when debug is enabled
logger.debugTime("debug-operation");
// ... some operations ...
// End the debug timer (only logs when debug is enabled)
logger.debugTimeEnd("debug-operation");
Colors can be customized differently for browser and Node.js environments:
// Browser colors (CSS syntax)
const logger = new Logger("[my-app]", {
colors: {
INFO: "color: purple",
ERROR: "color: darkred",
WARN: "color: orange",
DEBUG: "color: cyan",
TIMER: "color: magenta",
},
});
// Node.js colors (ANSI codes)
const logger = new Logger("[my-app]", {
colors: {
INFO: "\x1b[35m", // Purple
ERROR: "\x1b[31m", // Red
WARN: "\x1b[33m", // Yellow
DEBUG: "\x1b[36m", // Cyan
TIMER: "\x1b[35m", // Magenta
},
});
const logger = new Logger("[my-app]", {
timestamp: true,
timestampFormat: "full",
});
logger.info("Application started");
// Output: [2024-02-16 15:30:45] [my-app] Application started
const logger = new Logger("[my-app]", { debug: true });
logger.debug("Configuration loaded:", { port: 3000 });
// Output: [my-app] Configuration loaded: { port: 3000 }
const logger = new Logger("[my-app]", { verboseTimer: true });
logger.time("db-query");
// ... database operation ...
logger.timeEnd("db-query");
// Output: [my-app] db-query: 123.45ms
const logger = new Logger("[my-app]", { debug: true });
// Only starts timer if debug is enabled
logger.debugTime("expensive-calculation");
// Some expensive operation
const result = performExpensiveCalculation();
// Only logs time if debug is enabled
logger.debugTimeEnd("expensive-calculation");