| name | mongez-copper-log |
| description | Themed CLI logger with `debug` / `info` / `success` / `warn` / `error` levels, colored symbol prefixes, level filtering, and a custom output stream. Errors serialize stack traces; plain values pass through `JSON.stringify` for structured printing.
TRIGGER when: code imports `log`, `createLogger`, `Logger`, `LogLevel`, or `LoggerOptions` from `@mongez/copper`; user asks "how do I print colored info / warn / error logs in a CLI / silence info messages in quiet mode / log to stderr"; replacing `consola`, `signale`, `ansi-colors` + manual prefix.
SKIP: pino/winston-style structured JSON logging for production servers; browser console (this writes to `process.stdout` by default).
|
Log
import { log } from "@mongez/copper";
log.info("Starting server on", 4000);
log.success("Build complete");
log.warn("Cache miss for", { key: "user:42" });
log.error(new Error("Database unreachable"));
log.debug("payload", payload);
Each call writes one line prefixed with a colored level symbol — ℹ info, ✔ success, ⚠ warn, ✖ error, • debug (with Windows ASCII fallbacks).
Default singleton
log is preconfigured: every level enabled, writing to process.stdout. Import and go.
createLogger(options)
| Option | Default | Note |
|---|
level | "debug" | Suppress lower priorities. Order: debug < info < success < warn < error |
stream | process.stdout | Switch to process.stderr to keep warnings off piped stdout |
levels | (built-ins) | Per-level { symbol, label, color } overrides |
import { createLogger, colors, symbols } from "@mongez/copper";
const log = createLogger({
level: "warn",
stream: process.stderr,
levels: {
error: { symbol: "💥", label: "BOOM", color: colors.redBright },
},
});
Argument handling
Multiple args are joined by space. Each arg is stringified:
string → as-is
Error → error.stack ?? error.message
- everything else →
JSON.stringify(value)
log.info("port", 4000, { secure: true });
log.error(new TypeError("nope"));
Level filtering
const log = createLogger({ level: process.env.QUIET ? "warn" : "debug" });
log.debug("verbose stuff");
log.warn("still shown");
When to reach for log vs console
- Use
log for CLI tooling output where colored levels improve scannability.
- Use
console (or a real logger like pino) for server / production logging where you need structured JSON, timestamps, or transports.
- Use
process.stderr.write directly when you want zero ANSI formatting — log always emits its symbol prefix.