package com.sybotan.android.demo.tools;

import android.text.TextUtils;
import android.util.Log;


public class LogUtil {
    public static boolean isPrint = false;

    /**
     * level 决定日志的显示级别，
     * VERBOSE显示所有级别日志
     * 显示中间个个级别的日志
     * NOTHING不是显示任何日志
     */

    private static final int VERBOSE = 1;

    private static final int DEBUG = 2;

    private static final int INFO = 3;

    private static final int WARN = 4;

    private static final int ERROR = 5;

    private static final int NOTHING = 6;

    /**
     * 控制打印级别
     * 是否打印日志
     */
    private static final int LEVEL = VERBOSE;//显示所有级别日志
//    private static final int LEVEL = NOTHING;//屏蔽所有日志

    //本项目默认tag
    private static final String defaultTag = "meos";//默认过滤器


    public static void v(String msg) {
        v(null, msg);
    }

    public static void v(String tag, String meg) {
        if (TextUtils.isEmpty(tag)) {
            tag = defaultTag;
        }
        if (LEVEL <= VERBOSE) {
            Log.v(tag, meg);
        }
    }

    public static void d(String msg) {
        d(null, msg);
    }

    public static void d(String tag, String msg) {
        if (TextUtils.isEmpty(tag)) {
            tag = defaultTag;
        }
        if (LEVEL <= DEBUG) {
            Log.d(tag, msg);
        }
    }

    public static void i(String msg) {
        i(defaultTag, msg);
    }

    public static void i(String tag, String msg) {
        if (TextUtils.isEmpty(tag)) {
            tag = defaultTag;
        }
        if (LEVEL <= INFO) {
            Log.i(tag, msg);

        }
    }

    public static void w(String msg) {
        w(null, msg);
    }

    public static void w(String tag, String msg) {
        if (TextUtils.isEmpty(tag)) {
            tag = defaultTag;
        }
        if (LEVEL <= WARN) {
            Log.w(tag, msg);
        }
    }

    public static void e(String msg) {
        if (isPrint) {
            e(null, msg);
        }
    }

    /**
     * 截断输出日志
     * 解决Log打印不全的问题
     *
     * @param msg
     */
    public static void e(String tag, String msg) {
        if (isPrint) {
            if (TextUtils.isEmpty(tag)) {
                tag = defaultTag;
            }
            if (LEVEL <= ERROR) {
                if (tag == null || tag.length() == 0
                        || msg == null || msg.length() == 0)
                    return;

                int segmentSize = 3 * 1024;
                long length = msg.length();
                if (length <= segmentSize) {// 长度小于等于限制直接打印
                    Log.e(tag, msg);
                } else {
                    while (msg.length() > segmentSize) {// 循环分段打印日志
                        String logContent = msg.substring(0, segmentSize);
                        msg = msg.replace(logContent, "");
                        Log.e(tag, logContent);
                    }
                    Log.e(tag, msg);// 打印剩余日志
                }
            }
        }
    }


    public static void ePrint(String msg) {
        if (isPrint) {
            int maxLength = 3000;
            if (msg.length() > maxLength) {
                SDCardHelper.saveFileToSDCardCustomDir(msg.getBytes(), "aLog", msg.substring(0, 30) + ".txt");
            }
        }
    }
}
