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", // hide debug/info/success 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-isError→error.stack ?? error.message- everything else →
JSON.stringify(value)
log.info("port", 4000, { secure: true });// ℹ port 4000 {"secure":true}
log.error(new TypeError("nope"));// ✖ TypeError: nope// at ...Level filtering
const log = createLogger({ level: process.env.QUIET ? "warn" : "debug" });log.debug("verbose stuff"); // hidden when QUIET=1log.warn("still shown");