【问题标题】:What is the best practice using Android Logger使用 Android Logger 的最佳做法是什么
【发布时间】:2014-07-25 06:23:47
【问题描述】:

我是 Android 新手。请帮助我了解使用 Android Logger 的最佳实践。我是否需要在android中的某个地方保留一个文件并继续将日志写入其中,或者不需要将日志写入文件。最佳做法可能是什么。

我的真正意图是这样。 一旦我们上线,如果我们的客户回来告诉我们某些东西在他们的 android 中崩溃或无法运行,那么我们如何调试? 在 Web 应用程序中,我会要求我的服务器管理员提供日志文件。当没有服务器错误但手机出现故障时,我们如何处理android应用程序。有没有办法从手机获取日志。

谢谢 拉维

【问题讨论】:

  • 你试过谷歌搜索吗?
  • 需要注意的一件重要事情-android 的 Log 类写入共享日志。在调试中随心所欲地使用它,但在发布版本中不要打印出任何不是绝对必要的东西——它只会让我们其他人在你发送垃圾邮件时更难使用它。

标签: android file logging


【解决方案1】:

取决于你的需要,你需要日志来半调试你的应用程序,而不是你可以轻松地使用内置日志功能。通过 Logcat,您可以轻松查看日志。

http://www.vogella.com/tutorials/AndroidLogging/article.html

//Declare a tag
String TAG= "SomeActivity";

//Log
Log.d(TAG, "Hello World"); //debug
Log.e(TAG, "Hello World"); //error

如果您希望在发布应用时记录多台设备。使用专用的日志框架(例如 Log4J)并将其上传到服务器。

【讨论】:

  • 我的真正意图是这个。一旦我们上线,如果我们的客户回来告诉我们某些东西在他们的 android 中崩溃或无法运行,那么我们如何调试?在 Web 应用程序中,我会要求我的服务器管理员提供日志文件。当没有服务器错误但手机出现故障时,我们如何处理android应用程序。有没有办法从手机获取日志。
  • 这是我的回答:使用专用的日志框架,例如 Log4J 并将其上传到服务器。
【解决方案2】:

一个提示(如果您使用的是 Eclipse,并且与问题没有直接关系) - Eclipse 对于查看日志非常不可靠。显然没有任何原因,它不时地完全停止显示日志。一个简单的解决方案是使用命令行工具查看日志。在 Linux 上你可以这样做:

$adb logcat MyTag:D *:S

如果您想将日志捕获到文件中,您可以这样做:

$adb logcat -d > logcat.txt.

希望这会有所帮助!

【讨论】:

    【解决方案3】:

    如果您计划发布/分发您的应用程序,则可以将日志存储在文件中,但根据我的观点,这不是更好的解决方案。您可以从您的应用配置在线工具。

    捕获所有服务器异常并发送有关该异常的所有详细信息。并将任何一种日志记录工具配置到您的应用程序中。

    你可以看到 log4j http://logging.apache.org/log4j/2.x/ 或 ACRA http://acra.ch/http://www.crittercism.com/

    【讨论】:

    • 当然可行,我们已经做了 50 年了。
    • @GabeSechan 如果您将每个手机的文件存储在一个文件中,那么您如何收集所有手机的所有报告?你告诉他们通过邮件发送?你继续增加文件编号?我认为更好的方法是使用市场上可用的此类在线工具,它们出于相同的原因而存在,并且不占用移动空间,并且文件写入不需要额外的逻辑。
    • 如果用户有特定问题,您可以让他们将日志发送给您。您不需要或不想要大量、绝大多数、绝大多数的日志。即使尝试这样做也只会生成大量您永远不会查看的数据——因为您正在大海捞针中寻找大量数据。最多可能有一点上传崩溃 - 但即使你有任何质量检查,它也不会找到太多。
    • 嗯,这取决于我要说的要求。
    • 呃,我不会这么说的。记录每个人所做的一切并上传它只有在您真正设法使用这些数据来改进程序时才有用。如果你不能,它实际上会使你的程序更加脆弱。我不会说没有人能做到这一点,但我会说做到这一点的地方是少数。那就是忽略事物的隐私方面-这样做简直令人毛骨悚然。我不会使用可以做到这一点的应用程序。
    【解决方案4】:

    Android 记录器 (android.util.Log) 的输出会发送到您不必维护的控制台。您实际上不必管理文件,只需管理输出。

    您有 5 类日志:

    • 详细:使用Log.v(tag, message)
    • 调试:使用Log.d(tag, message)
    • 信息:使用Log.i(tag, message)
    • 警告:使用Log.w(tag, message)
    • 错误:使用Log.e(tag, message)

    例如:

    Log.e("MyActivity", "Oops... caught this exception: " + exception.getMessage());
    

    LogCat 控制台(这是它的名称)允许您按日志级别进行过滤。这是细胞过滤。例如,如果您按“警告”过滤,您将看到所有警告和错误,但不会看到详细、调试和信息消息。

    您可以在official documentation 中找到更多详细信息。

    【讨论】:

      【解决方案5】:

      我的真正意图是这样。 一旦我们上线,如果我们的客户回来告诉我们某些东西在他们的 android 中崩溃或无法运行,那么我们如何调试? 在 Web 应用程序中,我会要求我的服务器管理员提供日志文件。当没有服务器错误但手机出现故障时,我们如何处理android应用程序。有没有办法从手机获取日志。

      【讨论】:

        【解决方案6】:

        如果您使用文件存储日志 - 如果文件变大,可能会出现性能问题。所以你需要及时清理文件。 至于我最好的解决方案使用firebasehttps://fabric.io/。 我们使用fabric.io。 您也可以为默认 Log 类使用一些包装器。比如这个https://github.com/JakeWharton/hugo

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-03-27
          • 2021-12-05
          • 1970-01-01
          • 2010-09-27
          • 2012-06-08
          • 1970-01-01
          • 2011-03-01
          • 2015-09-23
          相关资源
          最近更新 更多