class Logger {

  /**
   * 
   * @param {Object} params 
   * @param {String} params.abc
   * @param {Function} params.callFunc
   * @param {Boolean} params.isPushToServer
   */
  constructor(params) {
    if (params) {
      this.loggerLevel = params.logger_level ? params.logger_level : -1
      this.serviceName = params.service_name ? params.service_name : ''
      this.machineAddr = params.machine_addr ? params.machine_addr : ''
      this.port = params.port ? params.port : 80,
      this.dateTime = params.datetime
      this.callFunc = params.callFunc
      this.isPushToServer = params.isPushToServer
    }
  }

  debug(text, level) {
    if(!text && !level && !this.isPushToServer) return
    /* Отправляем инфу на сервер
      const data = {serviceInfo: this.params, text: text, level: level}
      axios.post(url, data)
      .then((res) => {
        return res
      })
      .catch((err) => {
        return err
      })
    ... */
    if (this.loggerLevel > level) {
      return this.callFunc ? this.callFunc(text) : 'Отладочная информация отправлена на сервер'
    }
  }
  info(text, level) {
    if(!text && !level && !this.isPushToServer) return
    /* Отправляем инфу на сервер
      const data = {serviceInfo: this.params, text: text, level: level}
      axios.post(url, data)
      .then((res) => {
        return res
      })
      .catch((err) => {
        return err
      })
    ... */
    if (this.loggerLevel > level) {
      return this.callFunc ? this.callFunc(text) : 'Информация отправлена на сервер'
    }
  }
  warn(text, level) {
    if(!text && !level && !this.isPushToServer) return
    /* Отправляем инфу на сервер
      const data = {serviceInfo: this.params, text: text, level: level}
      axios.post(url, data)
      .then((res) => {
        return res
      })
      .catch((err) => {
        return err
      })
    ... */
    if (this.loggerLevel > level) {
      return this.callFunc ? this.callFunc(text) : 'Предупреждение отправлено на сервер'
    }
  }
  error(text, level) {
    if(!text && !level && !this.isPushToServer) return
    /* Отправляем инфу на сервер
      const data = {serviceInfo: this.params, text: text, level: level}
      axios.post(url, data)
      .then((res) => {
        return res
      })
      .catch((err) => {
        return err
      })
    ... */
    if (this.loggerLevel > level) {
      return this.callFunc ? this.callFunc(text) : 'Ошибка отправлена на сервер'
    }
  }
}

export {Logger}