V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
diy886
V2EX  ›  Android

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

  •  
  •   diy886 · 2023-09-15 15:24:42 +08:00 · 8474 次点击
    这是一个创建于 430 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    20 条回复    2023-09-19 16:05:21 +08:00
    jorneyr
        1
    jorneyr  
       2023-09-15 15:26:35 +08:00   ❤️ 1
    Java Agent 修改执行逻辑。
    ShineyWang
        2
    ShineyWang  
       2023-09-15 15:39:25 +08:00
    java 我不怎么熟,之前弄 spring 的时候用了 GELF 搜集日志到 Seq 里面
    https://docs.datalust.co/docs/using-gelf

    然后在 seq 里面 filter 筛选的
    qwerthhusn
        3
    qwerthhusn  
       2023-09-15 15:39:26 +08:00   ❤️ 1
    非常简单,把那个类的源码拷贝出来,然后在代码目录里面创建这个类,把代码贴进去,然后就可以自由修改了。
    当类加载器加载那个类的时候,肯定会读取你自己编译的这个类。

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

    也可以直接把 Log 类弄出来,修改 d 方法,直接把日志功能废掉
    TArysiyehua
        4
    TArysiyehua  
       2023-09-15 15:45:39 +08:00
    用 apt , 凡是执行到这个方法,就直接 return
    TArysiyehua
        5
    TArysiyehua  
       2023-09-15 15:45:54 +08:00
    说错了,是 aop ,切片
    hidemyself
        6
    hidemyself  
       2023-09-15 15:49:20 +08:00
    看下 LOG 怎么实现的,一般这种日志框架都可以配置的吧
    c2const
        7
    c2const  
       2023-09-15 15:58:56 +08:00
    都有三方的 jar 包了,直接反编译把那行删了 :)
    vvtf
        8
    vvtf  
       2023-09-15 16:13:16 +08:00
    自己重写那个类, 然后编译好, 使用`jar -u`替换
    ```bash

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

    ```
    Kenyore
        9
    Kenyore  
       2023-09-15 16:24:31 +08:00
    楼上的是不是都不知道 logback 可以配置指定类的日志级别或者关闭日志
    TArysiyehua
        10
    TArysiyehua  
       2023-09-15 16:29:19 +08:00
    @Kenyore 你说的 logback 是个啥玩意?又不是每个 log 都用这个玩意实现的。。。
    lakehylia
        11
    lakehylia  
       2023-09-15 16:32:27 +08:00
    解开 jar ,搜关键字,然后删掉打印日志那部分的代码,重新打包 jar
    HangoX
        12
    HangoX  
       2023-09-15 16:38:54 +08:00
    用 jdex ,打开 jar ,修改,然后导出
    cubecube
        13
    cubecube  
       2023-09-15 16:40:58 +08:00
    @Kenyore Log.d 明显就是自己包装的一个实现。
    kaicity
        14
    kaicity  
       2023-09-15 16:43:03 +08:00   ❤️ 1
    @cubecube #13 这个帖子分类不是 Android 吗,所以这应该是安卓自带的 log 类,
    DefoliationM
        15
    DefoliationM  
       2023-09-15 18:25:26 +08:00 via Android
    Java agent 给重写了
    Hyseen
        16
    Hyseen  
       2023-09-15 18:32:24 +08:00
    用 agent 重写这个方法
    maokabc
        17
    maokabc  
       2023-09-16 01:57:03 +08:00 via Android
    .class 文件用 java asm 把方法清空,.dex 的话用 dexlib2
    SupperMary
        18
    SupperMary  
       2023-09-16 23:47:57 +08:00
    adb shell 进去之后,setprop persist.log.tag.T2OReader F
    试一下看有没有用
    diy886
        19
    diy886  
    OP
       2023-09-18 17:55:29 +08:00
    用了#3 的方法可行,但是居然还有一个 UsbDeviceConnectionJNI 的日志也在输出
    搜了一圈发现直接在 logcat 里选中文字后右键"Fold Lines Like this"就行了..
    4kingRAS
        20
    4kingRAS  
       2023-09-19 16:05:21 +08:00
    logcat 屏蔽不就行了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5481 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 06:46 · PVG 14:46 · LAX 22:46 · JFK 01:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.