package com.bbitcn.silk.utils.log;


import android.util.Log;

import com.xuexiang.rxutil2.rxjava.RxJavaUtils;
import com.xuexiang.rxutil2.rxjava.task.RxIOTask;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import timber.log.Timber;

public class MyLog extends Timber.Tree {
    public static final String TAG_ERROR = "Error";
    /**
     * 测试类
     */
    public static final String TAG_TEST = "调试";
    /**
     * 预警类
     */
    public static final String TAG_WARNING = "预警";

    /**
     * 传感器类
     */
    public static final String TAG_SENSOR = "传感器";

    /**
     * 控制器类
     */
    public static final String TAG_CONTROLLER = "控制器";

    /**
     * 网络类
     */
    public static final String TAG_NETWORK = "网络";

    /**
     * 系统类
     */
    public static final String TAG_APP = "系统";

    /**
     * 远程控制类
     */
    public static final String TAG_REMOTE = "远程控制";

    /**
     * 自动控制类
     */
    public static final String TAG_AUTO = "自动控制";
    /**
     * 人脸识别类
     */
    public static final String TAG_FACE = "人脸识别";

    public static List<String> getUserQueryTag() {
        List<String> tags = new ArrayList<>();
        Collections.addAll(tags, TAG_APP, TAG_REMOTE, TAG_CONTROLLER, TAG_WARNING,TAG_SENSOR, TAG_NETWORK, TAG_AUTO);
        return tags;
    }

    public static void test(String msg) {
        Timber.tag(TAG_TEST).i(msg);
    }

    public static void auto(String msg) {
        Timber.tag(TAG_AUTO).i(msg);
    }

    public static void autoError(String msg) {
        Timber.tag(TAG_AUTO + TAG_ERROR).e(msg);
    }

    public static void warning(String msg) {
        Timber.tag(TAG_WARNING).i(msg);
    }

    public static void warningError(String msg) {
        Timber.tag(TAG_WARNING + TAG_ERROR).e(msg);
    }

    public static void sensor(String msg) {
        Timber.tag(TAG_SENSOR).i(msg);
    }

    public static void sensorError(String msg) {
        Timber.tag(TAG_SENSOR + TAG_ERROR).e(msg);
    }

    public static void controller(String msg) {
        Timber.tag(TAG_CONTROLLER).i(msg);
    }

    public static void controllerError(String msg) {
        Timber.tag(TAG_CONTROLLER + TAG_ERROR).e(msg);
    }

    public static void network(String msg) {
        Timber.tag(TAG_NETWORK).i(msg);
    }

    public static void networkError(String msg) {
        Timber.tag(TAG_NETWORK + TAG_ERROR).e(msg);
    }

    public static void app(String msg) {
        Timber.tag(TAG_APP).i(msg);
    }

    public static void appError(String msg) {
        Timber.tag(TAG_APP + TAG_ERROR).e(msg);
    }

    public static void remote(String msg) {
        Timber.tag(TAG_REMOTE).i(msg);
    }

    public static void remoteError(String msg) {
        Timber.tag(TAG_REMOTE + TAG_ERROR).e(msg);
    }

    public static void face(String msg) {
        Timber.tag(TAG_FACE).i(msg);
    }

    public static void faceError(String msg) {
        Timber.tag(TAG_FACE + TAG_ERROR).e(msg);
    }

    @Override
    protected void log(int priority, String tag, String message, Throwable t) {
        //输出日志到控制台
        new Thread(() -> Log.println(priority, tag, message)).start();
    }

}
