Source: logging/console-logger.js

const Logger = require('./logger');

const level = process.env.LOG_LEVEL || 'info';

const pino = require('pino')({
  level,
  base: null,
  useLevelLabels: true
});

/**
 * Base implementation of logger writing in console.
 *
 * @class
 * @author Mihail Radkov
 * @author Svilen Velikov
 */
class ConsoleLogger extends Logger {
  /**
   * Initializes a console logger.
   *
   * Allows to create a child logger by providing the <code>config</code> param.
   * Anything in this configuration will be appended for each log.
   *
   * @param {object} [config] optional child logger configuration
   */
  constructor(config) {
    super();
    if (config) {
      this.logger = pino.child(config);
    } else {
      this.logger = pino;
    }
  }

  /**
   * Logs an info message.
   *
   * @param {...object} args arguments to be relayed for logging
   */
  info(...args) {
    this.logger.info(...args);
  }

  /**
   * Logs a warn message.
   *
   * @param {...object} args arguments to be relayed for logging
   */
  warn(...args) {
    this.logger.warn(...args);
  }

  /**
   * Logs an error message.
   *
   * @param {...object} args arguments to be relayed for logging
   */
  error(...args) {
    this.logger.error(...args);
  }

  /**
   * Logs a debug message.
   *
   * @param {...object} args arguments to be relayed for logging
   */
  debug(...args) {
    this.logger.debug(...args);
  }

  /**
   * Logs a trace message.
   *
   * @param {...object} args arguments to be relayed for logging
   */
  trace(...args) {
    this.logger.trace(...args);
  }
}

module.exports = ConsoleLogger;