projen
Version:
CDK for software projects
117 lines • 12.7 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.LogLevel = exports.Logger = void 0;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
const chalk_1 = __importDefault(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 {
static [JSII_RTTI_SYMBOL_1] = { fqn: "projen.Logger", version: "0.103.12" };
level;
usePrefix;
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_1.default.red;
case LogLevel.WARN:
return chalk_1.default.yellow;
case LogLevel.INFO:
return chalk_1.default.cyan;
case LogLevel.DEBUG:
return chalk_1.default.gray;
case LogLevel.VERBOSE:
return chalk_1.default.white;
default:
return chalk_1.default.white;
}
}
}
exports.Logger = Logger;
/**
* 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2xvZ2dlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsa0RBQTBCO0FBRTFCLHFDQUF1QztBQUN2QywyQ0FBd0M7QUFDeEMsdUNBQWlDO0FBQ2pDLGlDQUFrQztBQUNsQyxrREFBdUQ7QUFzQnZEOztHQUVHO0FBQ0gsTUFBYSxNQUFPLFNBQVEscUJBQVM7O0lBQ2xCLEtBQUssQ0FBVztJQUNoQixTQUFTLENBQVU7SUFFcEMsWUFBWSxLQUFpQixFQUFFLFVBQXlCLEVBQUU7UUFDeEQsTUFBTSxPQUFPLEdBQUcsSUFBQSwrQkFBa0IsRUFBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzRCxLQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFFbkQsc0RBQXNEO1FBQ3RELE1BQU0sWUFBWSxHQUFHLG9CQUFXLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFFaEUsSUFBSSxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxJQUFJLFlBQVksQ0FBQztRQUMzQyxJQUFJLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDO0lBQzlDLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxHQUFHLENBQUMsS0FBZSxFQUFFLEdBQUcsSUFBVztRQUN4QyxJQUFJLEtBQUssS0FBSyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDM0IsTUFBTSxJQUFJLEtBQUssQ0FBQyw4Q0FBOEMsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFFRCxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBRTFCLGlFQUFpRTtRQUNqRSxJQUFJLElBQUEsZUFBUSxFQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUM3RCxRQUFRLEdBQUcsUUFBUSxDQUFDLEtBQUssQ0FBQztRQUM1QixDQUFDO1FBRUQsSUFBSSxLQUFLLElBQUksUUFBUSxFQUFFLENBQUM7WUFDdEIsTUFBTSxLQUFLLEdBQ1QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQztnQkFDNUIsQ0FBQyxDQUFDLEdBQUcsTUFBZ0IsRUFBVSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3RELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQy9ELE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxjQUFJLElBQUksTUFBTSxHQUFHLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0RCxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE9BQU8sQ0FBQyxHQUFHLElBQVc7UUFDM0IsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLEtBQUssQ0FBQyxHQUFHLElBQVc7UUFDekIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLElBQUksQ0FBQyxHQUFHLElBQVc7UUFDeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLElBQUksQ0FBQyxHQUFHLElBQVc7UUFDeEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLEtBQUssQ0FBQyxHQUFHLElBQVc7UUFDekIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVPLGdCQUFnQixDQUFDLEtBQWU7UUFDdEMsUUFBUSxLQUFLLEVBQUUsQ0FBQztZQUNkLEtBQUssUUFBUSxDQUFDLEtBQUs7Z0JBQ2pCLE9BQU8sZUFBSyxDQUFDLEdBQUcsQ0FBQztZQUNuQixLQUFLLFFBQVEsQ0FBQyxJQUFJO2dCQUNoQixPQUFPLGVBQUssQ0FBQyxNQUFNLENBQUM7WUFDdEIsS0FBSyxRQUFRLENBQUMsSUFBSTtnQkFDaEIsT0FBTyxlQUFLLENBQUMsSUFBSSxDQUFDO1lBQ3BCLEtBQUssUUFBUSxDQUFDLEtBQUs7Z0JBQ2pCLE9BQU8sZUFBSyxDQUFDLElBQUksQ0FBQztZQUNwQixLQUFLLFFBQVEsQ0FBQyxPQUFPO2dCQUNuQixPQUFPLGVBQUssQ0FBQyxLQUFLLENBQUM7WUFDckI7Z0JBQ0UsT0FBTyxlQUFLLENBQUMsS0FBSyxDQUFDO1FBQ3ZCLENBQUM7SUFDSCxDQUFDOztBQWxHSCx3QkFtR0M7QUFFRDs7R0FFRztBQUNILElBQVksUUFPWDtBQVBELFdBQVksUUFBUTtJQUNsQiwwQkFBYyxDQUFBO0lBQ2QsOEJBQWtCLENBQUE7SUFDbEIsNEJBQWdCLENBQUE7SUFDaEIsNEJBQWdCLENBQUE7SUFDaEIsOEJBQWtCLENBQUE7SUFDbEIsa0NBQXNCLENBQUE7QUFDeEIsQ0FBQyxFQVBXLFFBQVEsd0JBQVIsUUFBUSxRQU9uQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCB0eXBlIHsgSUNvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBJU19URVNUX1JVTiB9IGZyb20gXCIuL2NvbW1vblwiO1xuaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50XCI7XG5pbXBvcnQgeyBJQ09OIH0gZnJvbSBcIi4vbG9nZ2luZ1wiO1xuaW1wb3J0IHsgaXNUcnV0aHkgfSBmcm9tIFwiLi91dGlsXCI7XG5pbXBvcnQgeyBmaW5kQ2xvc2VzdFByb2plY3QgfSBmcm9tIFwiLi91dGlsL2NvbnN0cnVjdHNcIjtcblxuLyoqXG4gKiBPcHRpb25zIGZvciBsb2dnaW5nIHV0aWxpdGllcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2dnZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBsb2dnaW5nIHZlcmJvc2l0eS4gVGhlIGxldmVscyBhdmFpbGFibGUgKGluIGluY3JlYXNpbmcgdmVyYm9zaXR5KSBhcmVcbiAgICogT0ZGLCBFUlJPUiwgV0FSTiwgSU5GTywgREVCVUcsIGFuZCBWRVJCT1NFLlxuICAgKlxuICAgKiBAZGVmYXVsdCBMb2dMZXZlbC5JTkZPXG4gICAqL1xuICByZWFkb25seSBsZXZlbD86IExvZ0xldmVsO1xuXG4gIC8qKlxuICAgKiBJbmNsdWRlIGEgcHJlZml4IGZvciBhbGwgbG9nZ2luZyBtZXNzYWdlcyB3aXRoIHRoZSBwcm9qZWN0IG5hbWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB1c2VQcmVmaXg/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFByb2plY3QtbGV2ZWwgbG9nZ2luZyB1dGlsaXRpZXMuXG4gKi9cbmV4cG9ydCBjbGFzcyBMb2dnZXIgZXh0ZW5kcyBDb21wb25lbnQge1xuICBwcml2YXRlIHJlYWRvbmx5IGxldmVsOiBMb2dMZXZlbDtcbiAgcHJpdmF0ZSByZWFkb25seSB1c2VQcmVmaXg6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IElDb25zdHJ1Y3QsIG9wdGlvbnM6IExvZ2dlck9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IHByb2plY3QgPSBmaW5kQ2xvc2VzdFByb2plY3Qoc2NvcGUsIG5ldy50YXJnZXQubmFtZSk7XG4gICAgc3VwZXIoc2NvcGUsIGAke25ldy50YXJnZXQubmFtZX0jJHtwcm9qZWN0Lm5hbWV9YCk7XG5cbiAgICAvLyBpZiB3ZSBhcmUgcnVubmluZyBpbnNpZGUgYSB0ZXN0LCBkZWZhdWx0IHRvIG5vIGxvZ3NcbiAgICBjb25zdCBkZWZhdWx0TGV2ZWwgPSBJU19URVNUX1JVTiA/IExvZ0xldmVsLk9GRiA6IExvZ0xldmVsLklORk87XG5cbiAgICB0aGlzLmxldmVsID0gb3B0aW9ucy5sZXZlbCA/PyBkZWZhdWx0TGV2ZWw7XG4gICAgdGhpcy51c2VQcmVmaXggPSBvcHRpb25zLnVzZVByZWZpeCA/PyBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2cgYSBtZXNzYWdlIHRvIHN0ZGVyciB3aXRoIGEgZ2l2ZW4gbG9nZ2luZyBsZXZlbC4gVGhlIG1lc3NhZ2Ugd2lsbCBiZVxuICAgKiBwcmludGVkIGFzIGxvbmcgYXMgYGxvZ2dlci5sZXZlbGAgaXMgc2V0IHRvIHRoZSBtZXNzYWdlJ3Mgc2V2ZXJpdHkgb3IgaGlnaGVyLlxuICAgKlxuICAgKiBAcGFyYW0gbGV2ZWwgTG9nZ2luZyB2ZXJib3NpdHlcbiAgICogQHBhcmFtIHRleHQgc3RyaW5ncyBvciBvYmplY3RzIHRvIHByaW50XG4gICAqL1xuICBwdWJsaWMgbG9nKGxldmVsOiBMb2dMZXZlbCwgLi4udGV4dDogYW55W10pIHtcbiAgICBpZiAobGV2ZWwgPT09IExvZ0xldmVsLk9GRikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQ2Fubm90IGxvZyBhIG1lc3NhZ2Ugd2l0aCBsZXZlbCBMb2dMZXZlbC5PRkZcIik7XG4gICAgfVxuXG4gICAgbGV0IG1heExldmVsID0gdGhpcy5sZXZlbDtcblxuICAgIC8vIGxvZ2dpbmcgbGV2ZWwgY2FuIGJlIG92ZXJyaWRkZW4gdGhyb3VnaCB0aGUgLS1kZWJ1ZyBDTEkgb3B0aW9uXG4gICAgaWYgKGlzVHJ1dGh5KHByb2Nlc3MuZW52LkRFQlVHKSAmJiBtYXhMZXZlbCA8IExvZ0xldmVsLkRFQlVHKSB7XG4gICAgICBtYXhMZXZlbCA9IExvZ0xldmVsLkRFQlVHO1xuICAgIH1cblxuICAgIGlmIChsZXZlbCA8PSBtYXhMZXZlbCkge1xuICAgICAgY29uc3QgY29sb3IgPVxuICAgICAgICB0aGlzLmNvbG9yRm9yTG9nTGV2ZWwobGV2ZWwpID8/XG4gICAgICAgICgoLi4udmFsdWVzOiBzdHJpbmdbXSk6IHN0cmluZyA9PiB2YWx1ZXMuam9pbihcIiBcIikpO1xuICAgICAgY29uc3QgcHJlZml4ID0gdGhpcy51c2VQcmVmaXggPyBgWyR7dGhpcy5wcm9qZWN0Lm5hbWV9XSBgIDogXCJcIjtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYCR7SUNPTn0gJHtwcmVmaXh9JHtjb2xvciguLi50ZXh0KX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTG9nIGEgbWVzc2FnZSB0byBzdGRlcnIgd2l0aCBWRVJCT1NFIHNldmVyaXR5XG4gICAqIEBwYXJhbSB0ZXh0IHN0cmluZ3Mgb3Igb2JqZWN0cyB0byBwcmludFxuICAgKi9cbiAgcHVibGljIHZlcmJvc2UoLi4udGV4dDogYW55W10pIHtcbiAgICB0aGlzLmxvZyhMb2dMZXZlbC5WRVJCT1NFLCAuLi50ZXh0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2cgYSBtZXNzYWdlIHRvIHN0ZGVyciB3aXRoIERFQlVHIHNldmVyaXR5XG4gICAqIEBwYXJhbSB0ZXh0IHN0cmluZ3Mgb3Igb2JqZWN0cyB0byBwcmludFxuICAgKi9cbiAgcHVibGljIGRlYnVnKC4uLnRleHQ6IGFueVtdKSB7XG4gICAgdGhpcy5sb2coTG9nTGV2ZWwuREVCVUcsIC4uLnRleHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvZyBhIG1lc3NhZ2UgdG8gc3RkZXJyIHdpdGggSU5GTyBzZXZlcml0eVxuICAgKiBAcGFyYW0gdGV4dCBzdHJpbmdzIG9yIG9iamVjdHMgdG8gcHJpbnRcbiAgICovXG4gIHB1YmxpYyBpbmZvKC4uLnRleHQ6IGFueVtdKSB7XG4gICAgdGhpcy5sb2coTG9nTGV2ZWwuSU5GTywgLi4udGV4dCk7XG4gIH1cblxuICAvKipcbiAgICogTG9nIGEgbWVzc2FnZSB0byBzdGRlcnIgd2l0aCBXQVJOIHNldmVyaXR5XG4gICAqIEBwYXJhbSB0ZXh0IHN0cmluZ3Mgb3Igb2JqZWN0cyB0byBwcmludFxuICAgKi9cbiAgcHVibGljIHdhcm4oLi4udGV4dDogYW55W10pIHtcbiAgICB0aGlzLmxvZyhMb2dMZXZlbC5XQVJOLCAuLi50ZXh0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2cgYSBtZXNzYWdlIHRvIHN0ZGVyciB3aXRoIEVSUk9SIHNldmVyaXR5XG4gICAqIEBwYXJhbSB0ZXh0IHN0cmluZ3Mgb3Igb2JqZWN0cyB0byBwcmludFxuICAgKi9cbiAgcHVibGljIGVycm9yKC4uLnRleHQ6IGFueVtdKSB7XG4gICAgdGhpcy5sb2coTG9nTGV2ZWwuRVJST1IsIC4uLnRleHQpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb2xvckZvckxvZ0xldmVsKGxldmVsOiBMb2dMZXZlbCk6IGNoYWxrLkNoYWxrRnVuY3Rpb24ge1xuICAgIHN3aXRjaCAobGV2ZWwpIHtcbiAgICAgIGNhc2UgTG9nTGV2ZWwuRVJST1I6XG4gICAgICAgIHJldHVybiBjaGFsay5yZWQ7XG4gICAgICBjYXNlIExvZ0xldmVsLldBUk46XG4gICAgICAgIHJldHVybiBjaGFsay55ZWxsb3c7XG4gICAgICBjYXNlIExvZ0xldmVsLklORk86XG4gICAgICAgIHJldHVybiBjaGFsay5jeWFuO1xuICAgICAgY2FzZSBMb2dMZXZlbC5ERUJVRzpcbiAgICAgICAgcmV0dXJuIGNoYWxrLmdyYXk7XG4gICAgICBjYXNlIExvZ0xldmVsLlZFUkJPU0U6XG4gICAgICAgIHJldHVybiBjaGFsay53aGl0ZTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBjaGFsay53aGl0ZTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBMb2dnaW5nIHZlcmJvc2l0eS5cbiAqL1xuZXhwb3J0IGVudW0gTG9nTGV2ZWwge1xuICBPRkYgPSBcIjAwLm9mZlwiLFxuICBFUlJPUiA9IFwiMTAuZXJyb3JcIixcbiAgV0FSTiA9IFwiMjAud2FyblwiLFxuICBJTkZPID0gXCIzMC5pbmZvXCIsXG4gIERFQlVHID0gXCI0MC5kZWJ1Z1wiLFxuICBWRVJCT1NFID0gXCI1MC52ZXJib3NlXCIsXG59XG4iXX0=