java - 监听我自己的应用程序制作的 LogCat Entires

标签 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 菜鸟,所以请对我温柔一点!

谢谢。

最佳答案

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

此外,Log 类是最终类,因此您不能扩展它并挂接到 .d.i.e, .w

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

但好消息是有一个特殊的 Log 函数允许监听器。 Log 类中有一个有趣的方法:

 public static TerribleFailureHandler setWtfHandler(TerribleFailureHandler handler)

你可以设置一个处理程序,当你这样做的时候会被调用

   Log.wtf (TAG, message)

有趣的谷歌方法名称:)

关于java - 监听我自己的应用程序制作的 LogCat Entires,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23138276/

相关文章:

java - 从文本文件中获取字符串并将每一行分配给值(一次 2 个并插入到 LinkedHashMap 中)

cordova - phonegap/cordova 插件的 Logcat 过滤器?

android - 如何将 map 放置在选项卡式 Android 应用程序的选项卡中

android - 我需要帮助来使用 android cam 和理解 logcat

Android Logcat 很短

java - 使用动态字段名称反序列化嵌套的 JSON 对象

Javadoc @return 标记注释重复是否必要?

java - Hibernate/JPA OneToOne 共享 key ,无生成值

android - 如何为操作栏文本设置自定义字体,并使其在启动时发生?

java - MPAndroidChart,如何更改散点图中绘制值的位置?