在我的代码中使用Log.d()或Log.e()

我已经使用Log.d()Log.e()通过我的android应用程序进行debugging。 我想知道如果我像这样释放我的应用程序,用户是否会看到我放入的所有debugging语句? 我是否需要做一些特殊的事情,使用户不会看到debugging日志,即使他们挂钩“adb logcat”

谢谢。

Solutions Collecting From Web of "在我的代码中使用Log.d()或Log.e()"

考虑使用这个: isLoggable()

检查指定标记的日志是否可以在指定级别login。 任何标签的默认级别都设置为INFO。 这意味着任何高于INFO的级别都将被logging。 在对日志logging方法进行任何调用之前,您应该检查是否应该logging您的标记。 您可以通过设置系统属性来更改默认级别: setprop log.tag.<YOUR_LOG_TAG> <LEVEL>其中level是VERBOSE,DEBUG,INFO,WARN,ERROR,ASSERT或SUPPRESS。 SUPPRESS将会closures你的标签的所有logging。 您还可以创build一个local.prop文件,其中包含以下内容: log.tag.<YOUR_LOG_TAG>=<LEVEL> ,并将其放在/data/local.prop

就个人而言,我会删除debugging日志,并使用Proguard保存错误日志。


最好像这样包装它:

 public class MyLog { public static void d(String tag, String msg) { if (Log.isLoggable(tag, Log.DEBUG)) { Log.d(tag, msg); } } public static void i(String tag, String msg) { if (Log.isLoggable(tag, Log.INFO)) { Log.i(tag, msg); } } // and so on... 

您可以通过发出adb命令来设置日志logging级别

留下日志logging在某些情况下可能非常糟糕: http ://web.archive.org/web/20121222023201/http: //vbsteven.com/archives/535

您可以使用ProGuard自动将其全部删除:

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

用户(或任何具有日志访问权限的应用程序)不仅可以查看您的日志,还可以让您的应用程序运行得更慢,并使用更多的电池电量。

编写一个日志,特别是从Java开始,可能会比您想象的要贵得多:只要在Java中构buildstring是很多工作。

市场上的应用程序允许用户即使不连接开发环境也能看到日志。

CatLog是我亲自使用的,它会告诉你一切。

我在我的应用程序中做的是创build一个包装类,我可以closures自己的布尔标志。 它具有TAG参数是我的代码的普通吞吐量的附加好处。

 public class QLog { private static final String TAG = "MyAppTag"; private static final boolean DEBUG_MODE = true; public static void d(String msg) { if(DEBUG_MODE) { Log.d(TAG, msg); } } ... } 

正如在android.developer.com中所说的那样

在构build要传入Log.d的string时,编译器使用StringBuilder,并且至less会发生三个分配:StringBuilder本身,缓冲区和String对象。 实际上,还有另一个缓冲区的分配和复制,甚至更多的压力。 这意味着,如果您的日志消息被过滤掉了,那么您可能会做大量的工作,并导致大量的开销。

这里是链接: http : //developer.android.com/reference/android/util/Log.html

开发时可以使用它们。 发布时,最好删除或混淆消息以保护PII(个人身份信息)。 这里的答案是非常有用的: Android Log.v(),Log.d(),Log.i(),Log.w(),Log.e() – 何时使用每一个?

这是一个教你如何在发布软件时处理这些日志的工具。 发布之前删除所有debugging日志logging调用:有工具可以做到这一点吗?

如果您的用户是开发人员,并将设备连接到正在开发的计算机并打开LogCat,则他将对Logcat中的所有日志进行身份validation,前提是他与该应用程序进行了交互。 当您要将应用程序发布到最终用户时,您应该删除这些日志。