@rx-ted/packages-logger
v0.0.1
Published
A lightweight logging library with file & console output, designed for Cloudflare/Node/Bun/Deno.
Downloads
79
Maintainers
Readme
@rx-ted/logger
A lightweight logging library with modular architecture — Logger, Handler, and Formatter separation. Supports multiple handlers, child loggers, and file rotation.
Features
- Modular Architecture: Logger → Handler → Formatter separation
- Multiple Handlers: Console and File handlers with independent configuration
- Child Loggers: Inheritance with scope-based namespaces
- File Rotation: Auto-dated filenames with max file count limits
- Dual Formatters: JSON and TEXT formats
- Multi-Runtime: Works with Bun, Node.js, Deno, and Cloudflare Workers
Install
pnpm add @rx-ted/loggerQuick Start
import { Logger } from "@rx-ted/logger";
const logger = new Logger({ name: "app" });
logger.info("Hello World");
logger.debug("Debug info", { userId: 123 });
logger.warn("Warning message");
logger.error("Error occurred", { code: "ERR_001" });Logger Options
| Option | Type | Default | Description |
| ----------- | ---------------------------------------- | --------- | ---------------------- |
| name | string | 'app' | Logger namespace |
| scope | string | - | Child logger scope |
| level | 'debug' \| 'info' \| 'warn' \| 'error' | 'info' | Log level |
| handlers | HandlerConfig[] | console | Handler configurations |
| propagate | boolean | true | Propagate to parent |
| onError | (err: LogError) => void | - | Error callback |
Handlers
Console Handler
const logger = new Logger({
name: "app",
handlers: [
{
type: "console",
level: "debug",
formatter: {
type: "text",
template: "[{time}] [{level}] {namespace}: {message}",
colors: true,
},
},
],
});File Handler
const logger = new Logger({
name: "app",
handlers: [
{
type: "file",
level: "info",
formatter: { type: "json" }, // or 'text'
maxSize: "10MB", // default: 10MB
maxFiles: 7, // default: 7
},
],
});File handler features:
- Auto-dated filenames:
app.2026-04-20.json - Automatic old file cleanup when exceeding
maxFiles - Automatic date rollover at midnight
Child Loggers
const logger = new Logger({ name: "app" });
const child = logger.child("module");
console.log(child.namespace); // "app.module"Child loggers:
- Inherit parent's handlers by default
- Inherit parent's level
- Disable propagation by default (set
propagate: trueto enable) - Require
scopeoption (cannot usename)
Methods
debug(message, context?)- Debug levelinfo(message, context?)- Info levelwarn(message, context?)- Warning levelerror(message, context?)- Error levelchild(scope, options?)- Create child loggersetLevel(level)- Change log leveladdHandler(handler)- Add handlerclose()- Close all handlers
Error Handling
const logger = new Logger({
name: "app",
handlers: [
{
type: "file",
onError: (err) => {
console.error("Handler error:", err.error);
},
},
],
onError: (err) => {
console.error("Logger error:", err.error);
},
});Runtime Notes
- File handler is automatically disabled in Cloudflare Workers environment
- Supports Bun, Node.js, and Deno runtimes
Testing
pnpm test # Run tests
pnpm test:coverage # Run with coverage