如何在构建Android应用程序时禁用某些日志功能?

时间:2012-04-04 11:39:23

标签: android logging

我使用日志功能来调试我的Android应用。我接近发布我的应用程序,我想降低调试级别。但是我不知道如何禁用其中的一些功能。假设我只想禁用Log.v()日志。

Android doc说here应该删除代码中的Log函数调用,或删除/设置为false :: android :: debbugable选项。第一个选项不符合我的需要,因为我想在我的源代码中记录调用(以便将来更新)。第二个选项禁用所有日志,这对于预发布测试不方便。

您知道如何仅禁用详细(Log.v)日志吗?

非常感谢!

2 个答案:

答案 0 :(得分:4)

您可以为Log - 类创建自己的包装器,可能是这样的:

static class MyLog{
    private static int mLevel;
    public final static void setLevel(int level){
        mLevel = level;
    }
    public final static void v(String tag, String message){
        if( mLevel > 0 ) return;
        Log.v(tag, message);
    }
    public final static void d(String tag, String message){
        if( mLevel > 1 ) return;
        Log.d(tag, message);
    }
    public final static void i(String tag, String message){
        if( mLevel > 2 ) return;
        Log.d(tag, message);
    }
    //Same for w and e if neccessary..
}

然后,您可以使用MyLog.setLevel(1);禁用任何详细日志记录(或更高级别以禁用这些日志)。

答案 1 :(得分:4)

如果您要使用Proguard对您的发布进行模糊处理,那么请使用

等行
-assumenosideeffects class android.util.Log {
    public static *** d(...);
    public static *** v(...);
}

进入配置文件将从您的代码中删除这些类别的日志记录。