适用于Android的良好日志记录技术

时间:2013-04-16 18:27:53

标签: android android-logcat android-debug

我想介绍一些我正在接管的Android应用程序的日志记录。我希望能够在开发期间引用此日志文件,并且如果客户在程序生产期间出现问题,则获取日志副本。

由于这将在生产中,我希望将日志文件变为滚动日志,因此它不会消耗太多资源。

在一些Android示例中,我注意到import android.util.Log;。我很好奇这是否是Android的标准记录方式。如果没有,这样做的好方法是什么(例如我在java中编码时真的喜欢log4j)?

  1. android.util.log可以像我要求的那样做滚动日志吗?

  2. 默认情况下android.util.Log在哪里写?

  3. 如果只是为了控制台,有没有办法将其写入Android设备上的滚动日志文件,如果该程序出现问题,可以通过电子邮件发送?

3 个答案:

答案 0 :(得分:1)

首先。您不应在生产代码中默认启用大量日志记录。我们通过编写默认日志类的扩展来解决它。

有了它,开发代码中的日志记录是默认的,生产代码中的默认值是off。您可以编写一些小的隐藏启用程序,以便您的客户可以在必要时激活日志记录。

其次使用应用程序存储和检索日志!试试CatLog或类似内容。

祝你好运!

public class MyLog {

    private static boolean m_Enabled = BuildConfig.DEBUG;

    public MyLog() {

    }

    public static void e(String tag, String msg) {
        if (m_Enabled) Log.e(tag, msg);
    }

    public static void w(String tag, String msg) {
        if (m_Enabled) Log.w(tag, msg);
    }

    public static void i(String tag, String msg) {
        if (m_Enabled) Log.i(tag, msg);
    }

    public static void d(String tag, String msg) {
        if (m_Enabled) Log.d(tag, msg);
    }

    public static void v(String tag, String msg) {
        if (m_Enabled) Log.v(tag, msg);
    }

    public static void enable() {
        m_Enabled = true;
    }

    public static void disable() {
        m_Enabled = false;
    }

    public static boolean isEnabled() {
       return m_Enabled;
    }
}

答案 1 :(得分:1)

  

android.util.log可以像我正在请求一样滚动日志吗?

1)不像你要求的那样。日志将会滚动,但对于设备上的所有应用程序,不仅仅是您的应用程序。

  

默认情况下android.util.Log在哪里写?

2)Android日志系统,可以通过logcat查看。如果您熟悉它,可以将其想象为Windows事件日志。我会下载一个logcat程序并滚动浏览系统日志以熟悉它们。

  

如果只是为了控制台,有没有办法将其写入Android设备上的滚动日志文件,如果程序出现问题,可以通过电子邮件发送?

3)您可以将自己的滚动日志写入文件系统,然后通过电子邮件发送。但是,您必须实现此功能。您还可以尝试查看是否有可满足您需求的第三方日志工具/库。

答案 2 :(得分:1)

有关于如何使用标准的Log.X And​​roid调用& amp;在Android设备上进行大小限制滚动日志的文档和示例。 " logcat的" - 例如,请参阅herehere