class Logger {
  log(message, level = 'INFO') {
    console.log(`[${this.generateTimestamp()}] [${level}] ${message}`)
  }

  generateTimestamp() {
    const d = new Date();

    // Date
    const year = d.getFullYear();
    const month = this.parseDate(d.getMonth() + 1);
    const day = this.parseDate(d.getDate());

    // Time
    const hour = this.parseDate(d.getHours());
    const minutes = this.parseDate(d.getMinutes());
    const seconds = this.parseDate(d.getSeconds());
    const miliseconds = this.parseDate(d.getMilliseconds(), true);

    // Timezone
    const tz = -d.getTimezoneOffset() / 60;

    return `${year}-${month}-${day} ${hour}:${minutes}:${seconds}.${miliseconds} UTC${tz >= 0 ? '+' + tz : tz}`;
  }

  parseDate(date, ms = false) {
    if (ms) {
      if (date >= 10 && date < 100) {
        return `0${date}`;
      } else if (date < 10) {
        return `00${date}`;
      }
    }

    return date < 10 ? `0${date}` : date.toString();
  }
}

module.exports = Logger;