jar 包有个 log 方法如何过滤或者屏蔽

237 天前
 diy886

第三方的读 nfc 卡 jar 包有个方法疯狂打印日志

    private void setLog(String content) {
        Log.d("T2OReader", content);
    }

也没有给其他方法关闭日志

因为要开线程循环读卡,有没有读到数据他自己都打印日志,一开起来直接刷屏

有没有办法把他过滤或者屏蔽,debug 模式的时候直接 return 也行

4610 次点击
所在节点    Android
20 条回复
jorneyr
237 天前
Java Agent 修改执行逻辑。
ShineyWang
237 天前
java 我不怎么熟,之前弄 spring 的时候用了 GELF 搜集日志到 Seq 里面
https://docs.datalust.co/docs/using-gelf

然后在 seq 里面 filter 筛选的
qwerthhusn
237 天前
非常简单,把那个类的源码拷贝出来,然后在代码目录里面创建这个类,把代码贴进去,然后就可以自由修改了。
当类加载器加载那个类的时候,肯定会读取你自己编译的这个类。

比如你这里可以直接把调用日志的那个类复制出来建一份,然后修改 setLog 方法不让其写日志。

也可以直接把 Log 类弄出来,修改 d 方法,直接把日志功能废掉
TArysiyehua
237 天前
用 apt , 凡是执行到这个方法,就直接 return
TArysiyehua
237 天前
说错了,是 aop ,切片
hidemyself
237 天前
看下 LOG 怎么实现的,一般这种日志框架都可以配置的吧
c2const
237 天前
都有三方的 jar 包了,直接反编译把那行删了 :)
vvtf
237 天前
自己重写那个类, 然后编译好, 使用`jar -u`替换
```bash

jar -uvf xxx.jar com/xxx/aa/Log.class

```
Kenyore
237 天前
楼上的是不是都不知道 logback 可以配置指定类的日志级别或者关闭日志
TArysiyehua
237 天前
@Kenyore 你说的 logback 是个啥玩意?又不是每个 log 都用这个玩意实现的。。。
lakehylia
237 天前
解开 jar ,搜关键字,然后删掉打印日志那部分的代码,重新打包 jar
HangoX
237 天前
用 jdex ,打开 jar ,修改,然后导出
cubecube
237 天前
@Kenyore Log.d 明显就是自己包装的一个实现。
kaicity
237 天前
@cubecube #13 这个帖子分类不是 Android 吗,所以这应该是安卓自带的 log 类,
DefoliationM
237 天前
Java agent 给重写了
Hyseen
237 天前
用 agent 重写这个方法
maokabc
237 天前
.class 文件用 java asm 把方法清空,.dex 的话用 dexlib2
SupperMary
236 天前
adb shell 进去之后,setprop persist.log.tag.T2OReader F
试一下看有没有用
diy886
234 天前
用了#3 的方法可行,但是居然还有一个 UsbDeviceConnectionJNI 的日志也在输出
搜了一圈发现直接在 logcat 里选中文字后右键"Fold Lines Like this"就行了..
4kingRAS
233 天前
logcat 屏蔽不就行了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/974128

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX