
/**
 * 日志类
 * 方法传值说明，可以传1~2个值，如：
 * Log.d('===>>测试')
 * Log.e('===>','这里可以是字符串/对象')
 * 注意，当传两个值时，最好不要两个值都为Object
*/
import { isShowLog } from '@/config/env';
export default class MyLog {
  static format = "yyyy-MM-dd HH:mm:ss";

  static d() {
    if (!isShowLog) return;
    if(arguments.length == 0) return;
    let prefix = this.dateFormat(new Date(), this.format) + ":  ";
    if(arguments.length == 1) console.log(prefix, arguments[0]);
    else if(arguments.length > 1) console.log(prefix + arguments[0], arguments[1]);
  }

  static i() {
    if (!isShowLog) return;
    if(arguments.length == 0) return;
    let prefix = this.dateFormat(new Date(), this.format) + ":  ";
    if(arguments.length == 1) console.info(prefix, arguments[0]);
    else if(arguments.length > 1) console.info(prefix + arguments[0], arguments[1]);
  }

  static w() {
    if (!isShowLog) return;
    if(arguments.length == 0) return;
    let prefix = this.dateFormat(new Date(), this.format) + ":  ";
    if(arguments.length == 1) console.warn(prefix, arguments[0]);
    else if(arguments.length > 1) console.warn(prefix + arguments[0], arguments[1]);
  }

  static e() {
    if (!isShowLog) return;
    if(arguments.length == 0) return;
    let prefix = this.dateFormat(new Date(), this.format) + ":  ";
    if(arguments.length == 1) console.error(prefix, arguments[0]);
    else if(arguments.length > 1) console.error(prefix + arguments[0], arguments[1]);
  }

  /** 把个位数转化成 0x模式
   * @param  {int} n 数字
   * @return {String}   转化后的数据
   */
  static formatNumber(n) {
    n = n.toString();
    return n[1] ? n : '0' + n;
  }

  /** 对外，格式化时间 时间戳转化为年 月 日 时 分 秒
   * @param  {Date} time   传入时间(Date类型)
   * @param  {String} format 返回格式，支持自定义，如yyyyMMdd
   * @return {String}        返回转化后的数据
   */
  static dateFormat(time, format) {
    var formateArr = ['yyyy', 'MM', 'dd', 'HH', 'mm', 'ss'];
    var returnArr = [];
    var date = time == null ? new Date() : time;
    returnArr.push(date.getFullYear());
    returnArr.push(this.formatNumber(date.getMonth() + 1));
    returnArr.push(this.formatNumber(date.getDate()));
    returnArr.push(this.formatNumber(date.getHours()));
    returnArr.push(this.formatNumber(date.getMinutes()));
    returnArr.push(this.formatNumber(date.getSeconds()));
    for (var i in returnArr) {
      format = format.replace(formateArr[i], returnArr[i]);
    }
    return format;
  }

}
