@santana-org/logger
v0.2.1
Published
A lightweight, configurable logger for Node.js and modern JavaScript environments
Maintainers
Readme
@santana-org/logger
📦 Install
npm install @santana-org/logger
pnpm add @santana-org/logger🚀 Quickstart
import { createLogger } from "@santana-org/logger"
const log = createLogger({
level: "info",
label: "app",
timestamps: true,
})
log.info("Server started")
log.warn("Low memory")
log.error("Unhandled exception", { code: 500 })📖 API
createLogger(options?)
| Option | Type | Default | Description |
|---|---|---|---|
| level | LogLevel | "debug" | Minimum level to output |
| label | string | — | Namespace prepended to every message |
| timestamps | boolean | false | Prefix messages with ISO timestamp |
| colors | boolean | auto | Force or disable colorized output |
| formatter | Formatter | built-in | Override the output format entirely |
| writer | Writer | stdout/stderr | Override where output goes |
🔢 Log levels
debug → info → success → warn → errorAnything below the configured level is silently ignored.
🧩 Recipes
Scoped child logger
const dbLog = log.child("db")
dbLog.debug("Query executed") // → [app:db] Query executedCustom formatter
import { createLogger, type LogEntry } from "@santana-org/logger"
const log = createLogger({
formatter: (entry: LogEntry, colors: boolean) =>
`[${entry.level.toUpperCase()}] ${entry.message}`,
})Silent in tests
const log = createLogger({ level: "error" })
// Only errors get through — no noise in test outputCapture output
const lines: string[] = []
const log = createLogger({
writer: (line) => lines.push(line),
})🏗️ Design decisions
- Small dependency surface. Uses a tiny shared
@santana-org/colorsutility package. - ESM-first. CJS interop included, but the package is written for modern runtimes.
- TTY-aware colors. Colors auto-disable when piped — no
NO_COLORhacks needed. - Composable, not configurable-forever. One factory, one logger, one job.
📄 License
MIT © santana-org — contributions are welcome, see CONTRIBUTING.
