通过我自己的应用程序监听LogCat条目

时间:2014-04-17 16:11:30

标签: java android logcat android-logcat

我是否可以通过自己的应用程序监听消息是否存入LogCat?

例如......

// Somewhere in my application (on a background service):
Log.i("myModule", "Something been done");

和....

    // Somewhere else something like... 
    LogCatListener logCatListener = new LogCatListener()
    {
       public void onInfoRecieved(String tag, String message)
       { 
          //Do whatever you want with the message
       }
    }

我是一个Android noob,所以请对我温柔!

感谢。

1 个答案:

答案 0 :(得分:1)

不幸的是,对于典型的日志调用(.d.i.w),您似乎无法直接执行此操作。如果查看Log类(https://android.googlesource.com/platform/frameworks/base/+/android-4.3_r2.1/core/java/android/util/Log.java)的源代码,您会看到这些调用只是被转换为println_native,这是一个映射到本机实现的私有函数。 / p>

此外,Log类是最终的,因此您无法扩展它并挂钩.d.i.e,{{1} }

如果您需要捕获这些调用,我担心您唯一的解决方案是编写.w类包装器。这适用于您的自定义日志,但显然不适用于系统发出的Log类调用。

但好消息是有一个允许听众的特殊Log功能。 Log课上有一个有趣的方法:

Log

您可以设置将在执行

时调用的处理程序
 public static TerribleFailureHandler setWtfHandler(TerribleFailureHandler handler)

有趣的谷歌方法名称:)