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

被折叠的 条评论
为什么被折叠?



