Android 自用LogUtil记录

import android.util.Log;

/**
 * 管理Log的工具类:可通过设置mCurrentLevel,控制Log输出级别。
 * 项目上线时应将mCurrentLevel设置为LEVEL_INFO,不输出调试级别日志,
 * 或者设置为LEVEL_NONE,禁止Log输出。
 */
public class LogUtil {
    //日志输出级别NONE
    private static final int LEVEL_NONE = 0;
    //日志输出级别E
    private static final int LEVEL_ERROR = 1;
    //日志输出级别W
    private static final int LEVEL_WARN = 2;
    //日志输出级别I
    private static final int LEVEL_INFO = 3;
    //日志输出级别D
    private static final int LEVEL_DEBUG = 4;
    //日志输出级别V
    private static final int LEVEL_VERBOSE = 5;

    //日志输出时的Tag
    private static String mTag = "LogUtil";
    //当前日志输出的最大级别
    private static int mCurrentLevel = LEVEL_VERBOSE;

    //筛选过滤
    private static boolean allowD = true;
    private static boolean allowE = true;
    private static boolean allowI = true;
    private static boolean allowV = true;
    private static boolean allowW = true;
    private static boolean allowWtf = true;

    public static void setLevel(int level) {
        mCurrentLevel = level;
    }

    /**
     * 以级别为 v 的形式输出LOG
     */
    public static void v(String tag, String msg) {
        if (!allowV) return;

        if (mCurrentLevel >= LEVEL_VERBOSE) {
            Log.v(tag, msg);
        }
    }

    /**
     * 以级别为 d 的形式输出LOG
     */
    public static void d(String tag, String msg) {
        if (!allowD) return;

        if (mCurrentLevel >= LEVEL_DEBUG) {
            Log.d(tag, msg);
        }
    }

    /**
     * 以级别为 i 的形式输出LOG
     */
    public static void i(String tag, String msg) {
        if (!allowI) return;

        if (mCurrentLevel >= LEVEL_INFO) {
            Log.i(tag, msg);
        }
    }

    /**
     * 以级别为 w 的形式输出LOG
     */
    public static void w(String tag, String msg) {
        if (!allowW) return;

        if (mCurrentLevel >= LEVEL_WARN) {
            Log.w(tag, msg);
        }
    }

    /**
     * 以级别为 w 的形式输出Throwable
     */
    public static void w(Throwable tr) {
        if (!allowW) return;

        if (mCurrentLevel >= LEVEL_WARN) {
            Log.w(mTag, "", tr);
        }
    }

    /**
     * 以级别为 w 的形式输出LOG信息和Throwable
     */
    public static void w(String msg, Throwable tr) {
        if (!allowW) return;

        if (mCurrentLevel >= LEVEL_WARN && null != msg) {
            Log.w(mTag, msg, tr);
        }
    }

    /**
     * 以级别为 e 的形式输出LOG
     */
    public static void e(String tag, String msg) {
        if (!allowE) return;

        if (mCurrentLevel >= LEVEL_ERROR) {
            Log.e(tag, msg);
        }
    }

    /**
     * 以级别为 e 的形式输出Throwable
     */
    public static void e(Throwable tr) {
        if (!allowE) return;

        if (mCurrentLevel >= LEVEL_ERROR) {
            Log.e(mTag, "", tr);
        }
    }

    /**
     * 以级别为 e 的形式输出LOG信息和Throwable
     */
    public static void e(String msg, Throwable tr) {
        if (!allowE) return;

        if (mCurrentLevel >= LEVEL_ERROR && null != msg) {
            Log.e(mTag, msg, tr);
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android开发中,我们经常会使用Log来打印日志。但是,Android原生的Log输出信息有限,为了更好地输出和管理日志,我们可以自定义LogUtil。 下面是一个简单的LogUtil类,可以自定义输出日志级别、输出信息格式等: ```java public class LogUtil { private static final String TAG = "LogUtil"; private static boolean sDebug = true; // 是否打印日志 private static boolean sSaveLog = false; // 是否保存日志到文件 private static String sLogPath = Environment.getExternalStorageDirectory().getPath() + "/log.txt"; // 日志保存路径 public static void setDebug(boolean debug) { sDebug = debug; } public static void setSaveLog(boolean saveLog) { sSaveLog = saveLog; } public static void setLogPath(String logPath) { sLogPath = logPath; } public static void v(String msg) { if (sDebug) { Log.v(TAG, msg); } saveLogToFile("V", TAG, msg); } public static void d(String msg) { if (sDebug) { Log.d(TAG, msg); } saveLogToFile("D", TAG, msg); } public static void i(String msg) { if (sDebug) { Log.i(TAG, msg); } saveLogToFile("I", TAG, msg); } public static void w(String msg) { if (sDebug) { Log.w(TAG, msg); } saveLogToFile("W", TAG, msg); } public static void e(String msg) { if (sDebug) { Log.e(TAG, msg); } saveLogToFile("E", TAG, msg); } private static void saveLogToFile(String level, String tag, String msg) { if (sSaveLog) { try { File file = new File(sLogPath); FileWriter fw = new FileWriter(file, true); BufferedWriter bw = new BufferedWriter(fw); bw.write("[" + level + "] " + tag + ": " + msg + "\n"); bw.close(); fw.close(); } catch (IOException e) { Log.e(TAG, "saveLogToFile: " + e.getMessage()); } } } } ``` 使用方法: ```java LogUtil.setDebug(true); // 设置是否打印日志 LogUtil.setSaveLog(true); // 设置是否保存日志到文件 LogUtil.setLogPath("/sdcard/log.txt"); // 设置日志保存路径 LogUtil.v("verbose log"); LogUtil.d("debug log"); LogUtil.i("info log"); LogUtil.w("warning log"); LogUtil.e("error log"); ``` 以上就是一个简单的LogUtil类的实现,可以根据自己的需求进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值