Home Reference Source Repository

src/logger/Logger.js

export default class Logger {
  /**
   * @param {Object} options - Options to construct Logger instance.
   * @param {Object} options.logger - Core logger to initialize Logger.
   * @param {Function} options.logger.trace - log method for trace level.
   * @param {Function} options.logger.debug - log method for debug level.
   * @param {Function} options.logger.info - log method for info level.
   * @param {Function} options.logger.warn - log method for warn level.
   * @param {Function} options.logger.error - log method for error level.
   * @param {Function} options.logger.fatal - log method for fatal level.
   * @returns {Logger} - new Logger Instance.
   */
  constructor(options = {}) {
    const { logger } = options;
    if (!logger) {
      throw new Error('Initialize Error. logger is empty.');
    }
    [ 'trace', 'debug', 'info', 'warn', 'error', 'fatal' ].reduce((self, level) => {
      if (!logger[level]) {
        throw new Error(`Not Implemented : logger.${level}()`);
      }
      self[level] = (...logs) => logger[level](...logs);
      return self;
    }, this);
  }
}