container.ts
Version:
Modular application framework
58 lines • 2.05 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const container_1 = require("../../container");
// TODO: Validation library.
exports.ENV_LOG_LEVEL = "LOG_LEVEL";
class Log extends container_1.ContainerModule {
get level() { return this._level; }
constructor(name, opts, depends) {
super(name, opts, depends);
// Get log level from environment or fall back on default.
const rawLevel = this.environment.get(exports.ENV_LOG_LEVEL) || "info";
this._level = this.parseLevel(rawLevel);
this.debug(`level '${container_1.ELogLevel[this.level]}'`);
// Subscribe to container log messages filtered by level.
this.container.filterLogs(this.level)
.subscribe((log) => this.handleLog(log));
}
/** Convert environment log level string to level index, defaults to warning. */
parseLevel(level) {
switch ((level || "").toLowerCase()) {
case "emerg":
case "emergency": {
return container_1.ELogLevel.Emergency;
}
case "alert": {
return container_1.ELogLevel.Alert;
}
case "crit":
case "critical": {
return container_1.ELogLevel.Critical;
}
case "err":
case "error": {
return container_1.ELogLevel.Error;
}
case "warn":
case "warning": {
return container_1.ELogLevel.Warning;
}
case "notice": {
return container_1.ELogLevel.Notice;
}
case "info":
case "information":
case "informational": {
return container_1.ELogLevel.Informational;
}
case "debug": {
return container_1.ELogLevel.Debug;
}
default: {
return container_1.ELogLevel.Warning;
}
}
}
}
exports.Log = Log;
//# sourceMappingURL=Log.js.map