docs: function LoggerManager(level) {
          if (!(this instanceof LoggerManager)) {
              return new LoggerManager(level);
          }
  
          EventEmitter.call(this);
  
          // set the internal level variable to default
          var _logLevel = exports.LOG_LEVEL_WARNING;
  
          // define getter/setter for log level
          Object.defineProperty(this, "level", {
              enumerable: true,
              get: function () {
                  return _logLevel;
              },
              set: function (val) {
                  var newLevel = parseInt(val, 10); // coerce to int
                  if (newLevel >= exports.LOG_LEVEL_NONE && newLevel <= exports.LOG_LEVEL_DEBUG) {
                      _logLevel = newLevel;
                  }
              }
          });
  
          // use setter to (possibly) set the log level to caller's value
          this.level = level;
  
          var _ended = false;
          Object.defineProperty(this, "ended", {
              enumerable: true,
              get: function () {
                  return _ended;
              }
          });
          this.end = function () {
              if (!_ended) {
                  _ended = true;
                  this.emit("end");
              }
          };
      }