自定义根据某个目录输出Log日志

本文介绍了如何自定义Log日志管理,以解决项目上线时关闭日志的问题。通常开发者使用Log.i(TAG,msg)输出日志,但上线时需要关闭。作者提出通过判断SD卡上特定文件是否存在来控制日志开关,简化测试和调试流程。在SDK开发中,此方法有助于确认SDK接入状态。文章还提供了创建SD卡目录文件的adb命令。" 120032145,8762097,腾讯Python招聘岗位分析:揭秘技术要求与地域分布,"['Python', '爬虫', '数据分析', '数据可视化']

**平时我做项目的时候,总会通过打log输出日志的方法的方法进行查找以及解决bug,相信不少人都是直接用系统的Log.i(TAG,msg)来输出,但是有没有想过一个问题,就是当你的项目上线的的,这些log你怎么关闭?为此,不同的公司或者不同的开发者都会自我封装一个工具类,对Log日志统一管理封装。
**之前我一直是用网上某位大神封装的LogUtils工具类(具体名字不太记得了)。直接上代码:

public class LogUtils {
    // 日志的6个等级
    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;

    /**
     * 当开发过程中,只需要将level指定成VERBOSE,即可打印所有的日志
     * 当项目正式上线的时候将level指定成NOTHING就可以了
     */
    private static final int level = VERBOSE;

    public static void v(String tag, String msg) {
        if (level <= VERBOSE) {
            Log.v(tag, msg);
        }
    }

    public static void d(String tag, String msg) {
        if (level <= DEBUG) {
            Log.d(tag, msg);
        }
    }

    public static void i(String tag, String msg) {
        if (level <= INFO) {
            Log.i(tag, msg);
        }
    }

    public static void w(String tag, String msg) {
        if (level <= WARN) {
            Log.w(tag, msg);
        }
    }

    public static void e(String tag, String msg) {
        if (level <= ERROR) {
            Log.e(tag, msg);
        }
    }
}

用法相当简单,测试开发过程中,只需要将当开发过程中,只需要将level指定成VERBOSE,即可打印所有的日志,当项目正式上线的时候将level指定成NOTHING就可以了。
–>但是,每次你都是手动去切换,太麻烦了,而且有时候你线上的包有问题,你拿下来想测试,却发现连接AS没有Log输出,无从查找(当然这个可以反编译修改然后重打包去测试,后面有空我会写一个编译的教程)。所以这个方法有一定的局限性。
**最近在自己做sdk开发的时候,就遇到了这个问题,我应该怎么设置这个log来保证用户发包给我测试的时候,确保接入是否成功呢?当然,我在接某家SDK的时候就发现,在手机里面建立某个文件,来输出某个指定的Log.
–>思路有了 ,通过判断sdcard目录下是否有某个文件,来决定log是否输出,这样子就可以避免打包上线时忘记关闭Log,也可以让用户快速测试SDK是否接入成功。

public class LogUtils {
    //这个TAG可以自己定义,一般建议就是自己公司名
    private static final String TAG = "Briskemen";

    private static final boolean isDebug= isFileExist();

    /**
     * 通过判断指定目录下文件是否存在,来决定是否输出Log日志
     * @return
     */
    private static boolean isFileExist(){
        //目录路径可以自定义。
        File file = new File("/sdcard/briskemen");
        if (file.exists()){
            return true;
        }
        return false;
    }

    public static void v( String msg) {
        if (isDebug) {
            Log.v(TAG, msg);
        }
    }

    public static void d(String msg) {
        if (isDebug) {
            Log.d(TAG, msg);
        }
    }

    public static void i( String msg) {
        if (isDebug) {
            Log.i(TAG, msg);
        }
    }

    public static void w( String msg) {
        if (isDebug) {
            Log.w(TAG, msg);
        }
    }

    public static void e(String tag, String msg) {
        if (isDebug) {
            Log.e(TAG, msg);
        }
    }
}

这里我定义了TAG以及目录路径,这两个你们可以根据实际业务来更改。
–>另外,上面的路径是在sdcard目录下新建一个briskemen的目录,这里附上adb命令,教你快速在sdcard目录下创建该文件.
首先,启动cmd,输入adb shell然后回车,最后cd sdcard回车,表示进入sdcard目录,touch briskemen回车,表示创建该文件。
adb命令在sdcard创建文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值