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

来源:互联网 发布:淘宝对新店的扶持政策 编辑:程序博客网 时间:2024/05/21 05:23

**平时我做项目的时候,总会通过打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创建文件

原创粉丝点击