projen
Version:
CDK for software projects
114 lines • 12.4 kB
JavaScript
;
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.LogLevel = exports.Logger = void 0;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
const chalk = require("chalk");
const common_1 = require("./common");
const component_1 = require("./component");
const logging_1 = require("./logging");
const util_1 = require("./util");
const constructs_1 = require("./util/constructs");
/**
* Project-level logging utilities.
*/
class Logger extends component_1.Component {
constructor(scope, options = {}) {
const project = (0, constructs_1.findClosestProject)(scope, new.target.name);
super(scope, `${new.target.name}#${project.name}`);
// if we are running inside a test, default to no logs
const defaultLevel = common_1.IS_TEST_RUN ? LogLevel.OFF : LogLevel.INFO;
this.level = options.level ?? defaultLevel;
this.usePrefix = options.usePrefix ?? false;
}
/**
* Log a message to stderr with a given logging level. The message will be
* printed as long as `logger.level` is set to the message's severity or higher.
*
* @param level Logging verbosity
* @param text strings or objects to print
*/
log(level, ...text) {
if (level === LogLevel.OFF) {
throw new Error("Cannot log a message with level LogLevel.OFF");
}
let maxLevel = this.level;
// logging level can be overridden through the --debug CLI option
if ((0, util_1.isTruthy)(process.env.DEBUG) && maxLevel < LogLevel.DEBUG) {
maxLevel = LogLevel.DEBUG;
}
if (level <= maxLevel) {
const color = this.colorForLogLevel(level) ??
((...values) => values.join(" "));
const prefix = this.usePrefix ? `[${this.project.name}] ` : "";
console.error(`${logging_1.ICON} ${prefix}${color(...text)}`);
}
}
/**
* Log a message to stderr with VERBOSE severity
* @param text strings or objects to print
*/
verbose(...text) {
this.log(LogLevel.VERBOSE, ...text);
}
/**
* Log a message to stderr with DEBUG severity
* @param text strings or objects to print
*/
debug(...text) {
this.log(LogLevel.DEBUG, ...text);
}
/**
* Log a message to stderr with INFO severity
* @param text strings or objects to print
*/
info(...text) {
this.log(LogLevel.INFO, ...text);
}
/**
* Log a message to stderr with WARN severity
* @param text strings or objects to print
*/
warn(...text) {
this.log(LogLevel.WARN, ...text);
}
/**
* Log a message to stderr with ERROR severity
* @param text strings or objects to print
*/
error(...text) {
this.log(LogLevel.ERROR, ...text);
}
colorForLogLevel(level) {
switch (level) {
case LogLevel.ERROR:
return chalk.red;
case LogLevel.WARN:
return chalk.yellow;
case LogLevel.INFO:
return chalk.cyan;
case LogLevel.DEBUG:
return chalk.gray;
case LogLevel.VERBOSE:
return chalk.white;
default:
return chalk.white;
}
}
}
exports.Logger = Logger;
_a = JSII_RTTI_SYMBOL_1;
Logger[_a] = { fqn: "projen.Logger", version: "0.99.51" };
/**
* Logging verbosity.
*/
var LogLevel;
(function (LogLevel) {
LogLevel["OFF"] = "00.off";
LogLevel["ERROR"] = "10.error";
LogLevel["WARN"] = "20.warn";
LogLevel["INFO"] = "30.info";
LogLevel["DEBUG"] = "40.debug";
LogLevel["VERBOSE"] = "50.verbose";
})(LogLevel || (exports.LogLevel = LogLevel = {}));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLCtCQUErQjtBQUUvQixxQ0FBdUM7QUFDdkMsMkNBQXdDO0FBQ3hDLHVDQUFpQztBQUNqQyxpQ0FBa0M7QUFDbEMsa0RBQXVEO0FBc0J2RDs7R0FFRztBQUNILE1BQWEsTUFBTyxTQUFRLHFCQUFTO0lBSW5DLFlBQVksS0FBaUIsRUFBRSxVQUF5QixFQUFFO1FBQ3hELE1BQU0sT0FBTyxHQUFHLElBQUEsK0JBQWtCLEVBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0QsS0FBSyxDQUFDLEtBQUssRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRW5ELHNEQUFzRDtRQUN0RCxNQUFNLFlBQVksR0FBRyxvQkFBVyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBRWhFLElBQUksQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssSUFBSSxZQUFZLENBQUM7UUFDM0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQztJQUM5QyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksR0FBRyxDQUFDLEtBQWUsRUFBRSxHQUFHLElBQVc7UUFDeEMsSUFBSSxLQUFLLEtBQUssUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztRQUNsRSxDQUFDO1FBRUQsSUFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztRQUUxQixpRUFBaUU7UUFDakUsSUFBSSxJQUFBLGVBQVEsRUFBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLFFBQVEsR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDN0QsUUFBUSxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUM7UUFDNUIsQ0FBQztRQUVELElBQUksS0FBSyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sS0FBSyxHQUNULElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUM7Z0JBQzVCLENBQUMsQ0FBQyxHQUFHLE1BQWdCLEVBQVUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN0RCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMvRCxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsY0FBSSxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDdEQsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSSxPQUFPLENBQUMsR0FBRyxJQUFXO1FBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxLQUFLLENBQUMsR0FBRyxJQUFXO1FBQ3pCLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxJQUFJLENBQUMsR0FBRyxJQUFXO1FBQ3hCLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7O09BR0c7SUFDSSxJQUFJLENBQUMsR0FBRyxJQUFXO1FBQ3hCLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7O09BR0c7SUFDSSxLQUFLLENBQUMsR0FBRyxJQUFXO1FBQ3pCLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxLQUFlO1FBQ3RDLFFBQVEsS0FBSyxFQUFFLENBQUM7WUFDZCxLQUFLLFFBQVEsQ0FBQyxLQUFLO2dCQUNqQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUM7WUFDbkIsS0FBSyxRQUFRLENBQUMsSUFBSTtnQkFDaEIsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDO1lBQ3RCLEtBQUssUUFBUSxDQUFDLElBQUk7Z0JBQ2hCLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQztZQUNwQixLQUFLLFFBQVEsQ0FBQyxLQUFLO2dCQUNqQixPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDcEIsS0FBSyxRQUFRLENBQUMsT0FBTztnQkFDbkIsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDO1lBQ3JCO2dCQUNFLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQztRQUN2QixDQUFDO0lBQ0gsQ0FBQzs7QUFsR0gsd0JBbUdDOzs7QUFFRDs7R0FFRztBQUNILElBQVksUUFPWDtBQVBELFdBQVksUUFBUTtJQUNsQiwwQkFBYyxDQUFBO0lBQ2QsOEJBQWtCLENBQUE7SUFDbEIsNEJBQWdCLENBQUE7SUFDaEIsNEJBQWdCLENBQUE7SUFDaEIsOEJBQWtCLENBQUE7SUFDbEIsa0NBQXNCLENBQUE7QUFDeEIsQ0FBQyxFQVBXLFFBQVEsd0JBQVIsUUFBUSxRQU9uQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuaW1wb3J0IHR5cGUgeyBJQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IElTX1RFU1RfUlVOIH0gZnJvbSBcIi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDb21wb25lbnQgfSBmcm9tIFwiLi9jb21wb25lbnRcIjtcbmltcG9ydCB7IElDT04gfSBmcm9tIFwiLi9sb2dnaW5nXCI7XG5pbXBvcnQgeyBpc1RydXRoeSB9IGZyb20gXCIuL3V0aWxcIjtcbmltcG9ydCB7IGZpbmRDbG9zZXN0UHJvamVjdCB9IGZyb20gXCIuL3V0aWwvY29uc3RydWN0c1wiO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGxvZ2dpbmcgdXRpbGl0aWVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvZ2dlck9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGxvZ2dpbmcgdmVyYm9zaXR5LiBUaGUgbGV2ZWxzIGF2YWlsYWJsZSAoaW4gaW5jcmVhc2luZyB2ZXJib3NpdHkpIGFyZVxuICAgKiBPRkYsIEVSUk9SLCBXQVJOLCBJTkZPLCBERUJVRywgYW5kIFZFUkJPU0UuXG4gICAqXG4gICAqIEBkZWZhdWx0IExvZ0xldmVsLklORk9cbiAgICovXG4gIHJlYWRvbmx5IGxldmVsPzogTG9nTGV2ZWw7XG5cbiAgLyoqXG4gICAqIEluY2x1ZGUgYSBwcmVmaXggZm9yIGFsbCBsb2dnaW5nIG1lc3NhZ2VzIHdpdGggdGhlIHByb2plY3QgbmFtZS5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHVzZVByZWZpeD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUHJvamVjdC1sZXZlbCBsb2dnaW5nIHV0aWxpdGllcy5cbiAqL1xuZXhwb3J0IGNsYXNzIExvZ2dlciBleHRlbmRzIENvbXBvbmVudCB7XG4gIHByaXZhdGUgcmVhZG9ubHkgbGV2ZWw6IExvZ0xldmVsO1xuICBwcml2YXRlIHJlYWRvbmx5IHVzZVByZWZpeDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogSUNvbnN0cnVjdCwgb3B0aW9uczogTG9nZ2VyT3B0aW9ucyA9IHt9KSB7XG4gICAgY29uc3QgcHJvamVjdCA9IGZpbmRDbG9zZXN0UHJvamVjdChzY29wZSwgbmV3LnRhcmdldC5uYW1lKTtcbiAgICBzdXBlcihzY29wZSwgYCR7bmV3LnRhcmdldC5uYW1lfSMke3Byb2plY3QubmFtZX1gKTtcblxuICAgIC8vIGlmIHdlIGFyZSBydW5uaW5nIGluc2lkZSBhIHRlc3QsIGRlZmF1bHQgdG8gbm8gbG9nc1xuICAgIGNvbnN0IGRlZmF1bHRMZXZlbCA9IElTX1RFU1RfUlVOID8gTG9nTGV2ZWwuT0ZGIDogTG9nTGV2ZWwuSU5GTztcblxuICAgIHRoaXMubGV2ZWwgPSBvcHRpb25zLmxldmVsID8/IGRlZmF1bHRMZXZlbDtcbiAgICB0aGlzLnVzZVByZWZpeCA9IG9wdGlvbnMudXNlUHJlZml4ID8/IGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIExvZyBhIG1lc3NhZ2UgdG8gc3RkZXJyIHdpdGggYSBnaXZlbiBsb2dnaW5nIGxldmVsLiBUaGUgbWVzc2FnZSB3aWxsIGJlXG4gICAqIHByaW50ZWQgYXMgbG9uZyBhcyBgbG9nZ2VyLmxldmVsYCBpcyBzZXQgdG8gdGhlIG1lc3NhZ2UncyBzZXZlcml0eSBvciBoaWdoZXIuXG4gICAqXG4gICAqIEBwYXJhbSBsZXZlbCBMb2dnaW5nIHZlcmJvc2l0eVxuICAgKiBAcGFyYW0gdGV4dCBzdHJpbmdzIG9yIG9iamVjdHMgdG8gcHJpbnRcbiAgICovXG4gIHB1YmxpYyBsb2cobGV2ZWw6IExvZ0xldmVsLCAuLi50ZXh0OiBhbnlbXSkge1xuICAgIGlmIChsZXZlbCA9PT0gTG9nTGV2ZWwuT0ZGKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJDYW5ub3QgbG9nIGEgbWVzc2FnZSB3aXRoIGxldmVsIExvZ0xldmVsLk9GRlwiKTtcbiAgICB9XG5cbiAgICBsZXQgbWF4TGV2ZWwgPSB0aGlzLmxldmVsO1xuXG4gICAgLy8gbG9nZ2luZyBsZXZlbCBjYW4gYmUgb3ZlcnJpZGRlbiB0aHJvdWdoIHRoZSAtLWRlYnVnIENMSSBvcHRpb25cbiAgICBpZiAoaXNUcnV0aHkocHJvY2Vzcy5lbnYuREVCVUcpICYmIG1heExldmVsIDwgTG9nTGV2ZWwuREVCVUcpIHtcbiAgICAgIG1heExldmVsID0gTG9nTGV2ZWwuREVCVUc7XG4gICAgfVxuXG4gICAgaWYgKGxldmVsIDw9IG1heExldmVsKSB7XG4gICAgICBjb25zdCBjb2xvciA9XG4gICAgICAgIHRoaXMuY29sb3JGb3JMb2dMZXZlbChsZXZlbCkgPz9cbiAgICAgICAgKCguLi52YWx1ZXM6IHN0cmluZ1tdKTogc3RyaW5nID0+IHZhbHVlcy5qb2luKFwiIFwiKSk7XG4gICAgICBjb25zdCBwcmVmaXggPSB0aGlzLnVzZVByZWZpeCA/IGBbJHt0aGlzLnByb2plY3QubmFtZX1dIGAgOiBcIlwiO1xuICAgICAgY29uc29sZS5lcnJvcihgJHtJQ09OfSAke3ByZWZpeH0ke2NvbG9yKC4uLnRleHQpfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMb2cgYSBtZXNzYWdlIHRvIHN0ZGVyciB3aXRoIFZFUkJPU0Ugc2V2ZXJpdHlcbiAgICogQHBhcmFtIHRleHQgc3RyaW5ncyBvciBvYmplY3RzIHRvIHByaW50XG4gICAqL1xuICBwdWJsaWMgdmVyYm9zZSguLi50ZXh0OiBhbnlbXSkge1xuICAgIHRoaXMubG9nKExvZ0xldmVsLlZFUkJPU0UsIC4uLnRleHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvZyBhIG1lc3NhZ2UgdG8gc3RkZXJyIHdpdGggREVCVUcgc2V2ZXJpdHlcbiAgICogQHBhcmFtIHRleHQgc3RyaW5ncyBvciBvYmplY3RzIHRvIHByaW50XG4gICAqL1xuICBwdWJsaWMgZGVidWcoLi4udGV4dDogYW55W10pIHtcbiAgICB0aGlzLmxvZyhMb2dMZXZlbC5ERUJVRywgLi4udGV4dCk7XG4gIH1cblxuICAvKipcbiAgICogTG9nIGEgbWVzc2FnZSB0byBzdGRlcnIgd2l0aCBJTkZPIHNldmVyaXR5XG4gICAqIEBwYXJhbSB0ZXh0IHN0cmluZ3Mgb3Igb2JqZWN0cyB0byBwcmludFxuICAgKi9cbiAgcHVibGljIGluZm8oLi4udGV4dDogYW55W10pIHtcbiAgICB0aGlzLmxvZyhMb2dMZXZlbC5JTkZPLCAuLi50ZXh0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2cgYSBtZXNzYWdlIHRvIHN0ZGVyciB3aXRoIFdBUk4gc2V2ZXJpdHlcbiAgICogQHBhcmFtIHRleHQgc3RyaW5ncyBvciBvYmplY3RzIHRvIHByaW50XG4gICAqL1xuICBwdWJsaWMgd2FybiguLi50ZXh0OiBhbnlbXSkge1xuICAgIHRoaXMubG9nKExvZ0xldmVsLldBUk4sIC4uLnRleHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvZyBhIG1lc3NhZ2UgdG8gc3RkZXJyIHdpdGggRVJST1Igc2V2ZXJpdHlcbiAgICogQHBhcmFtIHRleHQgc3RyaW5ncyBvciBvYmplY3RzIHRvIHByaW50XG4gICAqL1xuICBwdWJsaWMgZXJyb3IoLi4udGV4dDogYW55W10pIHtcbiAgICB0aGlzLmxvZyhMb2dMZXZlbC5FUlJPUiwgLi4udGV4dCk7XG4gIH1cblxuICBwcml2YXRlIGNvbG9yRm9yTG9nTGV2ZWwobGV2ZWw6IExvZ0xldmVsKTogY2hhbGsuQ2hhbGtGdW5jdGlvbiB7XG4gICAgc3dpdGNoIChsZXZlbCkge1xuICAgICAgY2FzZSBMb2dMZXZlbC5FUlJPUjpcbiAgICAgICAgcmV0dXJuIGNoYWxrLnJlZDtcbiAgICAgIGNhc2UgTG9nTGV2ZWwuV0FSTjpcbiAgICAgICAgcmV0dXJuIGNoYWxrLnllbGxvdztcbiAgICAgIGNhc2UgTG9nTGV2ZWwuSU5GTzpcbiAgICAgICAgcmV0dXJuIGNoYWxrLmN5YW47XG4gICAgICBjYXNlIExvZ0xldmVsLkRFQlVHOlxuICAgICAgICByZXR1cm4gY2hhbGsuZ3JheTtcbiAgICAgIGNhc2UgTG9nTGV2ZWwuVkVSQk9TRTpcbiAgICAgICAgcmV0dXJuIGNoYWxrLndoaXRlO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGNoYWxrLndoaXRlO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIExvZ2dpbmcgdmVyYm9zaXR5LlxuICovXG5leHBvcnQgZW51bSBMb2dMZXZlbCB7XG4gIE9GRiA9IFwiMDAub2ZmXCIsXG4gIEVSUk9SID0gXCIxMC5lcnJvclwiLFxuICBXQVJOID0gXCIyMC53YXJuXCIsXG4gIElORk8gPSBcIjMwLmluZm9cIixcbiAgREVCVUcgPSBcIjQwLmRlYnVnXCIsXG4gIFZFUkJPU0UgPSBcIjUwLnZlcmJvc2VcIixcbn1cbiJdfQ==