android - 如何禁用 Android 对特定标签的内部日志记录(例如 AbsListView、GestureDetector、endeffect)

标签 android eclipse logging configuration adt

介绍

我正在为 android 开发一个应用程序,似乎在强大的系统中启用了一些持久日志记录,请参见下面的一些示例。我在我的 Galaxy S4 设备 (4.2.2) 上从 Eclipse 进行调试。

这是我在 LogCat View 中看到的日志消息类型的列表:

  • I/System.out:它是调试器的输出,标志着应用程序的启动,很有用
  • D/dalvikvm:GC_FOR_ALLOCGC_CONCURRENT 很有用,可以看出我的代码产生了太多垃圾
  • D/AbsListViewI/endeffect:每次创建 ListView 时,即主要是在我在 Activity 之间导航时
  • I/CustomFrequencyManager, D/GestureDetector:每次我触摸屏幕
  • W/IInputConnectionWrapper:不知道,但绝对不是我的错,即垃圾邮件
  • 其他:不介意,因为它们大多是错误

问题

如何禁用不是由我的代码生成的特定日志消息? 为了摆脱 ListView 创建日志,我已经尝试过:

  • adb shell setprop log.tag.AbsListView INFO 来自 Windows cmd
  • System.setProperties("log.tag.AbsListView", "INFO") Application.onCreate

我正在寻找一个解决方案

  • 我可以嵌入到我的应用程序代码/配置中,这样我就不必在每次重启手机时都执行它(就像 adb setprop 那样)。
  • 没有在 LogCat View 中将日志级别设置为 WARN,因为这意味着我对我自己的应用程序只能使用 WARN、ERROR 和 FATAL(您必须承认,这不是传达调试消息的最佳方式;另外它会隐藏重要的东西,比如 GC!)

和日志

10-26 18:45:36.387: W/ActivityThread(10956): Application com.example.android.apis is waiting for the debugger on port 8100...
10-26 18:45:36.437: I/System.out(10956): Sending WAIT chunk
10-26 18:45:36.447: I/dalvikvm(10956): Debugger is active
10-26 18:45:36.638: I/System.out(10956): Debugger has connected
10-26 18:45:36.638: I/System.out(10956): waiting for debugger to settle...
10-26 18:45:36.838: I/System.out(10956): waiting for debugger to settle...
10-26 18:45:37.038: I/System.out(10956): waiting for debugger to settle...
10-26 18:45:37.839: I/System.out(10956): debugger has settled (1325)
10-26 18:45:38.610: E/MoreInfoHPW_ViewGroup(10956): Parent view is not a TextView
10-26 18:45:38.680: D/dalvikvm(10956): GC_FOR_ALLOC freed 767K, 9% free 17300K/18984K, paused 17ms, total 20ms
10-26 18:45:38.690: I/dalvikvm-heap(10956): Grow heap (frag case) to 20.036MB for 2359312-byte allocation
10-26 18:45:38.700: D/dalvikvm(10956): GC_FOR_ALLOC freed 3K, 8% free 19600K/21292K, paused 13ms, total 13ms
10-26 18:45:38.720: D/dalvikvm(10956): GC_CONCURRENT freed <1K, 8% free 19601K/21292K, paused 3ms+5ms, total 17ms
10-26 18:45:38.760: D/AbsListView(10956): Get MotionRecognitionManager
10-26 18:45:38.770: D/AbsListView(10956): onVisibilityChanged() is called, visibility : 4
10-26 18:45:38.770: D/AbsListView(10956): unregisterIRListener() is called 
10-26 18:45:38.890: D/AbsListView(10956): onVisibilityChanged() is called, visibility : 0
10-26 18:45:38.890: D/AbsListView(10956): unregisterIRListener() is called 
10-26 18:45:38.920: D/AbsListView(10956): unregisterIRListener() is called 
10-26 18:45:38.950: I/endeffect(10956): AbsListView.onMeasure(), getWidth()=0, getHeight()=0, this=android.widget.ListView{424124d8 VFED.VC. .F....I. 0,0-0,0 #102000a android:id/list}
10-26 18:45:38.960: D/libEGL(10956): loaded /system/lib/egl/libEGL_adreno200.so
10-26 18:45:38.960: D/libEGL(10956): loaded /system/lib/egl/libGLESv1_CM_adreno200.so
10-26 18:45:38.970: D/libEGL(10956): loaded /system/lib/egl/libGLESv2_adreno200.so
10-26 18:45:38.970: I/Adreno200-EGL(10956): <qeglDrvAPI_eglInitialize:265>: EGL 1.4 QUALCOMM build:  (CL3579225)
10-26 18:45:38.970: I/Adreno200-EGL(10956): Build Date: 04/22/13 Mon
10-26 18:45:38.970: I/Adreno200-EGL(10956): Local Branch: adreno_sba_20130419
10-26 18:45:38.970: I/Adreno200-EGL(10956): Remote Branch: 
10-26 18:45:38.970: I/Adreno200-EGL(10956): Local Patches: 
10-26 18:45:38.970: I/Adreno200-EGL(10956): Reconstruct Branch: 
10-26 18:45:39.040: D/OpenGLRenderer(10956): Enabling debug mode 0
10-26 18:45:39.150: D/AbsListView(10956): unregisterIRListener() is called 
10-26 18:45:39.150: I/endeffect(10956): AbsListView.onLayout(), getWidth()=1080, getHeight()=1701, this=android.widget.ListView{424124d8 VFED.VC. .F....ID 0,0-1080,1701 #102000a android:id/list}
10-26 18:45:39.320: D/AbsListView(10956): unregisterIRListener() is called 
10-26 18:45:39.480: I/endeffect(10956): AbsListView.onMeasure(), getWidth()=1080, getHeight()=1701, this=android.widget.ListView{424124d8 VFED.VC. .F....I. 0,0-1080,1701 #102000a android:id/list}
10-26 18:45:39.490: D/AbsListView(10956): unregisterIRListener() is called 
10-26 18:45:39.490: I/endeffect(10956): AbsListView.onLayout(), getWidth()=1080, getHeight()=1701, this=android.widget.ListView{424124d8 VFED.VC. .F....ID 0,0-1080,1701 #102000a android:id/list}
10-26 18:45:56.757: I/CustomFrequencyManager(10956): newFrequencyRequest  - mFrequency = 1566000, mTimeoutMs = -1, mPkgName = LIST_SCROLL_BOOSTER@1
10-26 18:45:56.757: I/CustomFrequencyManager(10956): Boost Request from package = LIST_SCROLL_BOOSTER@1 frequency : 1566000type = 6
10-26 18:45:56.767: I/CustomFrequencyManager(10956): !! pkgName = LIST_SCROLL_BOOSTER@1
10-26 18:45:56.767: I/CustomFrequencyManager(10956): Request from package name pkgName = LIST_SCROLL_BOOSTER@1
10-26 18:45:56.767: I/CustomFrequencyManager(10956): mContext is Not Null  mContext.pkgName = com.example.android.apis
10-26 18:45:56.767: I/CustomFrequencyManager(10956): mToken is Null....Creating New Binder!
10-26 18:45:56.767: I/CustomFrequencyManager(10956): CPUDVFSControlRequest : doFrequencyRequest::  = 1566000 Timeout : -1
10-26 18:45:56.767: I/CustomFrequencyManager(10956): newFrequencyRequest  - mFrequency = 2, mTimeoutMs = -1, mPkgName = LIST_SCROLL_BOOSTER_CORE@2
10-26 18:45:56.767: I/CustomFrequencyManager(10956): Boost Request from package = LIST_SCROLL_BOOSTER_CORE@2 frequency : 2type = 4
10-26 18:45:56.767: I/CustomFrequencyManager(10956): !! pkgName = LIST_SCROLL_BOOSTER_CORE@2
10-26 18:45:56.767: I/CustomFrequencyManager(10956): Request from package name pkgName = LIST_SCROLL_BOOSTER_CORE@2
10-26 18:45:56.777: I/CustomFrequencyManager(10956): mContext is Not Null  mContext.pkgName = com.example.android.apis
10-26 18:45:56.777: I/CustomFrequencyManager(10956): mToken is Null....Creating New Binder!
10-26 18:45:56.777: I/CustomFrequencyManager(10956): CPUCoreControlRequest : doFrequencyRequest::  = 2 Timeout : -1
10-26 18:45:56.807: D/GestureDetector(10956): [Surface Touch Event] mSweepDown False, mLRSDCnt : -1 mTouchCnt : 8 mFalseSizeCnt:0
10-26 18:45:57.908: I/CustomFrequencyManager(10956): newFrequencyRequest  - mFrequency = 1566000, mTimeoutMs = -1, mPkgName = LIST_SCROLL_BOOSTER@1
10-26 18:45:57.908: I/CustomFrequencyManager(10956): Boost Request from package = LIST_SCROLL_BOOSTER@1 frequency : 1566000type = 6
10-26 18:45:57.908: I/CustomFrequencyManager(10956): !! pkgName = LIST_SCROLL_BOOSTER@1
10-26 18:45:57.908: I/CustomFrequencyManager(10956): Request from package name pkgName = LIST_SCROLL_BOOSTER@1
10-26 18:45:57.908: I/CustomFrequencyManager(10956): mContext is Not Null  mContext.pkgName = com.example.android.apis
10-26 18:45:57.908: I/CustomFrequencyManager(10956): mToken is Null....Creating New Binder!
10-26 18:45:57.908: I/CustomFrequencyManager(10956): CPUDVFSControlRequest : doFrequencyRequest::  = 1566000 Timeout : -1
10-26 18:45:57.918: I/CustomFrequencyManager(10956): newFrequencyRequest  - mFrequency = 2, mTimeoutMs = -1, mPkgName = LIST_SCROLL_BOOSTER_CORE@2
10-26 18:45:57.918: I/CustomFrequencyManager(10956): Boost Request from package = LIST_SCROLL_BOOSTER_CORE@2 frequency : 2type = 4
10-26 18:45:57.918: I/CustomFrequencyManager(10956): !! pkgName = LIST_SCROLL_BOOSTER_CORE@2
10-26 18:45:57.918: I/CustomFrequencyManager(10956): Request from package name pkgName = LIST_SCROLL_BOOSTER_CORE@2
10-26 18:45:57.928: I/CustomFrequencyManager(10956): mContext is Not Null  mContext.pkgName = com.example.android.apis
10-26 18:45:57.928: I/CustomFrequencyManager(10956): mToken is Null....Creating New Binder!
10-26 18:45:57.928: I/CustomFrequencyManager(10956): CPUCoreControlRequest : doFrequencyRequest::  = 2 Timeout : -1
10-26 18:45:58.099: D/GestureDetector(10956): [Surface Touch Event] mSweepDown False, mLRSDCnt : -1 mTouchCnt : 17 mFalseSizeCnt:0
10-26 18:46:09.209: I/CustomFrequencyManager(10956): newFrequencyRequest  - mFrequency = 1566000, mTimeoutMs = -1, mPkgName = LIST_SCROLL_BOOSTER@1
10-26 18:46:09.209: I/CustomFrequencyManager(10956): Boost Request from package = LIST_SCROLL_BOOSTER@1 frequency : 1566000type = 6
10-26 18:46:09.219: I/CustomFrequencyManager(10956): !! pkgName = LIST_SCROLL_BOOSTER@1
10-26 18:46:09.219: I/CustomFrequencyManager(10956): Request from package name pkgName = LIST_SCROLL_BOOSTER@1
10-26 18:46:09.219: I/CustomFrequencyManager(10956): mContext is Not Null  mContext.pkgName = com.example.android.apis
10-26 18:46:09.219: I/CustomFrequencyManager(10956): mToken is Null....Creating New Binder!
10-26 18:46:09.219: I/CustomFrequencyManager(10956): CPUDVFSControlRequest : doFrequencyRequest::  = 1566000 Timeout : -1
10-26 18:46:09.219: I/CustomFrequencyManager(10956): newFrequencyRequest  - mFrequency = 2, mTimeoutMs = -1, mPkgName = LIST_SCROLL_BOOSTER_CORE@2
10-26 18:46:09.229: I/CustomFrequencyManager(10956): Boost Request from package = LIST_SCROLL_BOOSTER_CORE@2 frequency : 2type = 4
10-26 18:46:09.229: I/CustomFrequencyManager(10956): !! pkgName = LIST_SCROLL_BOOSTER_CORE@2
10-26 18:46:09.229: I/CustomFrequencyManager(10956): Request from package name pkgName = LIST_SCROLL_BOOSTER_CORE@2
10-26 18:46:09.229: I/CustomFrequencyManager(10956): mContext is Not Null  mContext.pkgName = com.example.android.apis
10-26 18:46:09.229: I/CustomFrequencyManager(10956): mToken is Null....Creating New Binder!
10-26 18:46:09.229: I/CustomFrequencyManager(10956): CPUCoreControlRequest : doFrequencyRequest::  = 2 Timeout : -1
10-26 18:46:09.930: D/GestureDetector(10956): [Surface Touch Event] mSweepDown False, mLRSDCnt : -1 mTouchCnt : 51 mFalseSizeCnt:0
10-26 18:46:17.347: D/GestureDetector(10956): [Surface Touch Event] mSweepDown False, mLRSDCnt : -1 mTouchCnt : 9 mFalseSizeCnt:0
10-26 18:46:18.028: E/MoreInfoHPW_ViewGroup(10956): Parent view is not a TextView
10-26 18:46:18.058: D/AbsListView(10956): Get MotionRecognitionManager
10-26 18:46:18.068: D/AbsListView(10956): onVisibilityChanged() is called, visibility : 4
10-26 18:46:18.068: D/AbsListView(10956): unregisterIRListener() is called 
10-26 18:46:18.078: D/AbsListView(10956): onVisibilityChanged() is called, visibility : 0
10-26 18:46:18.078: D/AbsListView(10956): unregisterIRListener() is called 
10-26 18:46:18.078: D/AbsListView(10956): unregisterIRListener() is called 
10-26 18:46:18.098: D/AbsListView(10956): unregisterIRListener() is called 
10-26 18:46:18.128: I/endeffect(10956): AbsListView.onMeasure(), getWidth()=0, getHeight()=0, this=android.widget.ListView{427b2ca0 VFED.VC. .F....I. 0,0-0,0 #102000a android:id/list}
10-26 18:46:18.228: D/AbsListView(10956): unregisterIRListener() is called 
10-26 18:46:18.228: I/endeffect(10956): AbsListView.onLayout(), getWidth()=1080, getHeight()=1701, this=android.widget.ListView{427b2ca0 VFED.VC. .F....ID 0,0-1080,1701 #102000a android:id/list}
10-26 18:46:18.338: D/AbsListView(10956): unregisterIRListener() is called 
10-26 18:46:18.408: I/endeffect(10956): AbsListView.onMeasure(), getWidth()=1080, getHeight()=1701, this=android.widget.ListView{427b2ca0 VFED.VC. .F....I. 0,0-1080,1701 #102000a android:id/list}
10-26 18:46:18.418: D/AbsListView(10956): unregisterIRListener() is called 
10-26 18:46:18.418: I/endeffect(10956): AbsListView.onLayout(), getWidth()=1080, getHeight()=1701, this=android.widget.ListView{427b2ca0 VFED.VC. .F....ID 0,0-1080,1701 #102000a android:id/list}
10-26 18:46:18.549: W/IInputConnectionWrapper(10956): setComposingText on inactive InputConnection
10-26 18:46:18.559: D/AbsListView(10956): onVisibilityChanged() is called, visibility : 4
10-26 18:46:18.559: D/AbsListView(10956): unregisterIRListener() is called 
10-26 18:46:23.914: I/CustomFrequencyManager(10956): newFrequencyRequest  - mFrequency = 1566000, mTimeoutMs = -1, mPkgName = LIST_SCROLL_BOOSTER@3
10-26 18:46:23.914: I/CustomFrequencyManager(10956): Boost Request from package = LIST_SCROLL_BOOSTER@3 frequency : 1566000type = 6
10-26 18:46:23.914: I/CustomFrequencyManager(10956): !! pkgName = LIST_SCROLL_BOOSTER@3
10-26 18:46:23.914: I/CustomFrequencyManager(10956): Request from package name pkgName = LIST_SCROLL_BOOSTER@3
10-26 18:46:23.914: I/CustomFrequencyManager(10956): mContext is Not Null  mContext.pkgName = com.example.android.apis
10-26 18:46:23.914: I/CustomFrequencyManager(10956): mToken is Null....Creating New Binder!
10-26 18:46:23.914: I/CustomFrequencyManager(10956): CPUDVFSControlRequest : doFrequencyRequest::  = 1566000 Timeout : -1
10-26 18:46:23.924: I/CustomFrequencyManager(10956): newFrequencyRequest  - mFrequency = 2, mTimeoutMs = -1, mPkgName = LIST_SCROLL_BOOSTER_CORE@4
10-26 18:46:23.924: I/CustomFrequencyManager(10956): Boost Request from package = LIST_SCROLL_BOOSTER_CORE@4 frequency : 2type = 4
10-26 18:46:23.924: I/CustomFrequencyManager(10956): !! pkgName = LIST_SCROLL_BOOSTER_CORE@4
10-26 18:46:23.924: I/CustomFrequencyManager(10956): Request from package name pkgName = LIST_SCROLL_BOOSTER_CORE@4
10-26 18:46:23.924: I/CustomFrequencyManager(10956): mContext is Not Null  mContext.pkgName = com.example.android.apis
10-26 18:46:23.924: I/CustomFrequencyManager(10956): mToken is Null....Creating New Binder!
10-26 18:46:23.924: I/CustomFrequencyManager(10956): CPUCoreControlRequest : doFrequencyRequest::  = 2 Timeout : -1
10-26 18:46:24.835: D/GestureDetector(10956): [Surface Touch Event] mSweepDown False, mLRSDCnt : -1 mTouchCnt : 61 mFalseSizeCnt:0
10-26 18:46:26.676: D/GestureDetector(10956): [Surface Touch Event] mSweepDown False, mLRSDCnt : -1 mTouchCnt : 11 mFalseSizeCnt:0
10-26 18:46:27.307: E/MoreInfoHPW_ViewGroup(10956): Parent view is not a TextView
10-26 18:46:27.337: D/AbsListView(10956): Get MotionRecognitionManager
10-26 18:46:27.347: D/AbsListView(10956): onVisibilityChanged() is called, visibility : 4
10-26 18:46:27.347: D/AbsListView(10956): unregisterIRListener() is called 
10-26 18:46:27.357: D/AbsListView(10956): onVisibilityChanged() is called, visibility : 0
10-26 18:46:27.357: D/AbsListView(10956): unregisterIRListener() is called 
10-26 18:46:27.357: D/AbsListView(10956): unregisterIRListener() is called 
10-26 18:46:27.387: D/AbsListView(10956): unregisterIRListener() is called 
10-26 18:46:27.407: I/endeffect(10956): AbsListView.onMeasure(), getWidth()=0, getHeight()=0, this=android.widget.ListView{4286ddf8 VFED.VC. .F....I. 0,0-0,0 #102000a android:id/list}
10-26 18:46:27.517: D/AbsListView(10956): unregisterIRListener() is called 
10-26 18:46:27.517: I/endeffect(10956): AbsListView.onLayout(), getWidth()=1080, getHeight()=1701, this=android.widget.ListView{4286ddf8 VFED.VC. .F....ID 0,0-1080,1701 #102000a android:id/list}
10-26 18:46:27.627: D/AbsListView(10956): unregisterIRListener() is called 
10-26 18:46:27.727: I/endeffect(10956): AbsListView.onMeasure(), getWidth()=1080, getHeight()=1701, this=android.widget.ListView{4286ddf8 VFED.VC. .F....I. 0,0-1080,1701 #102000a android:id/list}
10-26 18:46:27.738: D/AbsListView(10956): unregisterIRListener() is called 
10-26 18:46:27.738: I/endeffect(10956): AbsListView.onLayout(), getWidth()=1080, getHeight()=1701, this=android.widget.ListView{4286ddf8 VFED.VC. .F....ID 0,0-1080,1701 #102000a android:id/list}
10-26 18:46:27.808: W/IInputConnectionWrapper(10956): setComposingText on inactive InputConnection
10-26 18:46:27.818: D/AbsListView(10956): onVisibilityChanged() is called, visibility : 4
10-26 18:46:27.818: D/AbsListView(10956): unregisterIRListener() is called 

这是一个有趣的事实:以上所有内容都是由在 Debug模式下启动并转到 View /列表并返回的 Android ApiDemos 应用程序生成的。

最佳答案

How can I disable specific log messages which are not produced by my code?

如果您使用的是 Eclipse,则只能通过定义过滤器来显示应用程序生成的日志。在 LogCat 窗口的左下角,单击加号图标以创建一个新过滤器。 “按应用程序名称”字段需要以下格式:com.yourpackage.yourapp。保存此过滤器后,您只需单击它即可仅查看与您的应用相关的消息

关于android - 如何禁用 Android 对特定标签的内部日志记录(例如 AbsListView、GestureDetector、endeffect),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19610151/

相关文章:

python - 子进程命令的实时输出

android - 速度较快的 Android 设备上的 FPS 较慢

android - 位图:out of memory error.如何在android中压缩后获取原始图像大小

java - 在ECLIPSE光子中导入Gradle项目时出错

java - 使用另一个 java 程序在没有 eclipse GUI 的情况下清理和构建 java 项目

android - 如何将 Android 应用程序日志保存到物理设备上的文件中?

java - Android:仅检索带号码的联系人

Android 使用 HttpPost/HttpGet 发送照片

java - 仅包含图像的 ListView

python - Django/Python 应用程序日志记录不起作用