wjc
2025-03-03 2225b1f0727fb74e10ac5692e68e4cd48f4f62d7
app/src/main/java/com/hdl/photovoltaic/other/HdlLogLogic.java
@@ -1,48 +1,139 @@
package com.hdl.photovoltaic.other;
import android.util.Log;
import android.util.LruCache;
import com.google.gson.Gson;
import com.hdl.photovoltaic.config.UserConfigManage;
import com.hdl.photovoltaic.utils.TimeUtils;
/**
 * 日志逻辑
 */
public class HdlLogLogic {
    //是否启动打印到Logcat上的标签(true:表示打印,false:表示不打印)
    public static boolean isStartPrintLogcat = true;
    //是否启动加到内存里面的标签(true:表示加入,false:表示不加入)
    public static boolean isStartAddToMemory = false;
    //默认打印标题
    private static String logTitle = "自定义输出打印信息";
    private static final Gson gson = new Gson();
    private static final CustomLogObject customLogObject = new CustomLogObject();
    /**
     * 是否需要打印(true不需要打印)
     */
    public static boolean isDebug = false;
    private static volatile HdlLogLogic sHdlLogLogic;
    /**
     * 获取当前对象
     * java打印
     *
     * @return HdlLogLogic
     * @param customizeContentFormat 自定义内容格式
     */
    public static synchronized HdlLogLogic getInstance() {
        if (sHdlLogLogic == null) {
            synchronized (HdlLogLogic.class) {
                if (sHdlLogLogic == null) {
                    sHdlLogLogic = new HdlLogLogic();
    public static void print(String customizeContentFormat) {
        printBase(customizeContentFormat, "0", false);
    }
    /**
     * java打印
     *
     * @param customizeContentFormat 自定义内容格式
     * @param isAddToMemory          是否加入内存(本地日志用到)
     */
    public static void print(String customizeContentFormat, boolean isAddToMemory) {
        printBase(customizeContentFormat, "0", isAddToMemory);
    }
    /**
     * java打印
     *
     * @param msg           自定义内容格式
     * @param code          状态码
     * @param isAddToMemory 是否加入内存(本地日志用到)
     */
    public static void print(String msg, int code, boolean isAddToMemory) {
        printBase(msg, code + "", isAddToMemory);
    }
    /**
     * java打印和存储日志
     *
     * @param msg           信息描述
     * @param code          状态
     * @param isAddToMemory 是否加入内存(本地日志用到)
     */
    private static void printBase(String msg, String code, boolean isAddToMemory) {
        try {
//            //如果这里频繁的new对象可能会影响加载数据速度
//            CustomLogObject customLogObject = new CustomLogObject();
            customLogObject.setMsgOrData(msg);
            customLogObject.setCode(code);
            String json = logTitle + (UserConfigManage.getInstance().isBAccount() ? "(B端)==" : "(C端)==") + gson.toJson(customLogObject);
            if (isStartPrintLogcat) {
                System.out.println(json);
            }
            if (isStartAddToMemory) {
                if (isAddToMemory) {
                    writeLog(json);
                }
            }
        } catch (Exception ignored) {
        }
        return sHdlLogLogic;
    }
    public static void print(String tag, String mgs) {
        if (isDebug) {
            return;
    /**
     * 写入日志内容到本地
     *
     * @param strLog 写入内容
     */
    public static void writeLog(String strLog) {
        synchronized (HdlLogLogic.class) {
            strLog = TimeUtils.getTimeFromTimestamp(System.currentTimeMillis()) + "s%" + " " + strLog;//加打印时间(s%占位符,设置显示时间不同字体颜色)
            HdlFileLogic.getInstance().appendFile(HdlFileLogic.getInstance().getLogFileNamePath(), strLog);
        }
        Log.d(tag, mgs);
    }
    public static void print(String mgs) {
        if (isDebug) {
            return;
        }
        System.out.println(mgs);
    /**
     * 读取日志内容
     *
     * @return 日志内容
     */
    public static String readLog() {
        return HdlFileLogic.getInstance().readFile(HdlFileLogic.getInstance().getLogFileNamePath());
    }
    /**
     * 自定义日志类
     */
    static class CustomLogObject {
        //信息描述
        private String msgOrData;
        //状态码
        private String code;
        public String getMsgOrData() {
            return msgOrData == null ? "" : msgOrData;
        }
        public void setMsgOrData(String msgOrData) {
            this.msgOrData = msgOrData;
        }
        public String getCode() {
            return code == null ? "0" : code;
        }
        public void setCode(String code) {
            this.code = code;
        }
    }
}