首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从系统类收集日志

问从系统类收集日志
EN

Stack Overflow用户
提问于 2018-05-07 15:06:59
回答 1查看 78关注 0票数 0

我正在开发一个应用程序,它使用安卓的MediaMuxer录制屏幕。使用Crashlytics,相当多的用户出现了“未能阻止muxer”崩溃,但我无法在我的任何设备上本地复制它。根据另一个问题,在运行MediaMuxer时生成的MPEG4Writer日志应该表明问题的来源,但是由于无法在本地复制这些日志,我需要远程收集这些日志并将它们传递给Crashlytics。

所以我的问题是: MediaMuxer和MPEG4Writer是系统类,所以我显然不能编辑它们来添加Crashlytics.log()行。我曾想过让应用程序读取Logcat输出,并存储包含MPEG4Writer的所有条目,然后,如果muxer崩溃,这些条目将被发送给Crashlytics,使用这一实现作为基础。这是我的密码:

代码语言:javascript
复制
public class LogRetriever extends Thread {

    private static final String TAG = LogRetriever.class.getCanonicalName();
    public static ArrayList<String> logStorage = new ArrayList<>();
    private AtomicBoolean mLoggingActive = new AtomicBoolean(true);

    @Override
    public void run() {
        try {
            String[] command = new String[] { "logcat" };
            Process process = Runtime.getRuntime().exec(command);
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));

            String line;
            while (mLoggingActive.get() && ((line = bufferedReader.readLine()) != null)){
                if(line.contains("MPEG4Writer")) {
                    logStorage.add(line);
                }
            }
        }
        catch (IOException ex) {
            Log.e(TAG, "start failed", ex);
        }
    }

    public void stopLogging() {
        mLoggingActive.set(false);
    }
}

使用上述方法,我似乎只得到了MPEG4Writer生成的前四行日志。其他的都可以通过Android的logcat看到,但不是我的代码收集的。我也尝试过这个图书馆,它似乎做了同样的事情,但是同样的问题,只收集了前4行。我怀疑MediaMuxer在这4行之后创建了自己的进程,此时我无法再读取它的logcat输出,因为我的LogRetriever类现在处于不同的进程中。那我该怎么收集这些日志呢?我是不是走错路了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-07 15:41:51

那我该怎么收集这些日志呢?

通常,除非您是为设备制造商工作,否则不会收集这些日志。

首先,从未正式支持在运行时访问LogCat;因此,您必须采用笨重的“叉logcat”方法。

除此之外,您还需要READ_LOGS权限才能获得比实际情况更多的信息。该权限为protectionLevel提供了protectionLevel,这意味着普通应用程序无法持有该权限。

这是出于隐私原因。READ_LOGS允许您访问所有的LogCat,以及许多可能敏感的应用程序(和一些系统进程)日志信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50217299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档