build-a-npm
Version:
A tool to create and publish Node packages with automatic version bumping and GitHub integration.
54 lines (45 loc) • 1.29 kB
JavaScript
const fs = require("fs");
const path = require("path");
class Logger {
constructor() {
this.verbose = false;
this.logFile = path.join(process.cwd(), "build-a-npm.log");
}
setVerbose(verbose) {
this.verbose = verbose;
if (verbose && !fs.existsSync(this.logFile)) {
fs.writeFileSync(
this.logFile,
`Log started at ${new Date().toISOString()}\n`
);
}
}
log(level, message, ...args) {
const timestamp = new Date().toISOString();
const formattedMessage = `[${timestamp}] ${level.toUpperCase()}: ${message}`;
if (this.verbose) {
fs.appendFileSync(
this.logFile,
`${formattedMessage}\n${args
.map((arg) => JSON.stringify(arg, null, 2))
.join("\n")}\n`
);
}
if (level === "error" || this.verbose) {
console[level === "error" ? "error" : "log"](formattedMessage, ...args);
}
}
info(message, ...args) {
this.log("info", message, ...args);
}
debug(message, ...args) {
this.log("debug", message, ...args);
}
warn(message, ...args) {
this.log("warn", message, ...args);
}
error(message, ...args) {
this.log("error", message, ...args);
}
}
module.exports = new Logger();