3

我希望向我正在接管的一个 android 应用程序引入一些日志记录。我希望能够在开发过程中引用这个日志文件,如果客户在程序生产过程中遇到问题,我希望得到一份日志副本。

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

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

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

  2. android.util.Log 默认写入到哪里?

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

4

3 回答 3

1

有文档和示例说明如何使用标准 Log.X And​​roid 调用和“logCat”在 android 设备上执行大小有界的滚动日志 - 例如,请参见此处此处

于 2014-10-27T13:13:00.950 回答
1

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

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

其次使用一个应用程序来存储和检索日志!尝试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;
    }
}
于 2013-04-16T18:40:05.687 回答
1

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

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

android.util.Log 默认写入到哪里?

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

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

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

于 2013-04-16T19:15:35.200 回答