2012-04-04 37 views
4

我使用日志功能来调试我的Android应用程序。我接近发布我的应用程序,我想减少调试级别。但是我不知道如何禁用这些功能。假设我只想禁用Log.v()日志。如何在构建Android应用程序时禁用某些日志功能?

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

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

非常感谢!

+1

我会在所有项目中使用//Log.v代替Log.v – weakwire 2012-04-04 11:48:09

+0

删除代码中所有可以使用的日志项目 – Rakshi 2012-04-04 11:50:48

回答

4

你可以创建自己包装为Log -class,也许是这样的:

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);禁用任何详细的日志记录(或更高的水平来禁用这些日志以及) 。

+0

不错的技术! – weakwire 2012-04-04 12:00:09

+0

不错,很容易,谢谢!从您的答案和另一个答案中,我明白没有内置解决方案。我认为这是5个不同功能的目的。他们只是为了美学吗? – Cyctemic 2012-04-04 12:32:47

+0

@Cyctemic可能有,但如果存在,我还没有找到它。如果您正在查看LogCat中的日志输出,您可以选择过滤掉某些级别的日志,因此它们不完全“无用”。 您可以在这里阅读关于日志记录的一些信息:http://developer.android.com/guide/developing/debugging/debugging-log.html – Jave 2012-04-04 12:41:46

4

如果你想混淆使用ProGuard的发布,然后把线如

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

到配置文件会从你的代码中删除记录的这些类别。

+0

我并没有打算使用Proguard,但我会将您的想法留在角落我的想法,因为它可能对我有其他计划有用。谢谢 :) – Cyctemic 2012-04-04 12:28:44

相关问题