Skip to content

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)

OptionDefaultNote
level"debug"Suppress lower priorities. Order: debug < info < success < warn < error
streamprocess.stdoutSwitch 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-is
  • Errorerror.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=1
log.warn("still shown");