2

我们在开发 Android 应用程序时总是记录异常。并且我们要规范格式和策略以防止打印 e.printStackTrace() 或不必要的日志?

那么最好的策略是什么?

我们要执行 Log.x(String tag, String msg, Throwable tr) to Log.x(tag, msg+tr.toString())吗?

请给我一些建议!

4

3 回答 3

3
  • 创建一个自定义Log类。
  • 让每个类都导入这个而不是android.util.Log

    public class Log{
    public static final boolean enableInfo      = false;
    public static final boolean enableError     = true;
    public static final boolean enableDebug     = true;
    public static final boolean enableVerbose   = false;
    
    public static void i(String tag, String msg) {
        if(enableInfo) {
            android.util.Log.i(tag,msg);
        }
    }
    public static void e(String tag, String msg) {
        if(enableError) {
            android.util.Log.e(tag,msg);
        }
    }
    public static void e(String tag, String msg, Exception e) {
        if(enableError) {
            android.util.Log.e(tag,msg, e);
        }
    }
    public static void v(String tag, String msg) {
        if(enableVerbose) {
            android.util.Log.v(tag,msg);
        }
    }
    public static void d(String tag, String msg) {
        if(enableDebug) {
            android.util.Log.d(tag,msg);
        }
    }
    

    }

  • 使用这种技术,您可以通过更改单个文件中的常量来启用和禁用整个应用程序中的日志,例如当您必须进行构建以发布应用程序时等。

    public static final boolean enableInfo      = false;
    public static final boolean enableError     = true;
    public static final boolean enableDebug     = true;
    public static final boolean enableVerbose   = false;
    
于 2012-08-28T10:58:29.847 回答
0

异常是错误,因此为了突出它们,我总是更喜欢在 android 中使用 Log.e。我总是选择 Log.e(LOG_TAG,e.getMessage());。我总是希望我的异常/可抛出消息简短但有意义。有时您可以打印出自己的日志消息,例如 Log.e(LOG_TAG,"除以零错误");

由你决定,哪个更适合你。

于 2012-08-28T08:57:07.637 回答
0

您肯定想使用 Log.e/w/d/i 我将它包装到另一个函数调用中,以便我可以将它们隐藏在发布版本中,但只需在函数调用中测试布尔常量

于 2012-08-28T09:14:00.070 回答