• androidlog日志之 Klog (StackTraceElement)


      之前写项目的时候一直用的自己封装的log,可以打印当前的类名,后来突然觉得很不方便(要想输出类名必须传入当前的参数), 而且调试的时候最想知道的其实是方法名,所以我每次打印log日志的时候都是把方法名放在tag里面,大概是(LogPrint.iprint(Object, Tag, msg));  我一直在想,有没有什么方法可以获得当前正在执行的函数的名称呢, 可是仔细一想,不对呀,按照c和汇编的思路,底层机器指令在执行的时候,所谓的方法其实只是对应的一个地址而已,地址又何来的名字呢(恩,感觉很有道理), 想到这里也就放弃了。

      不知过了多久,在网上突然看到了有人贡献了自己写了log日志封装类,让我想起了之前自己的问题,抱着好奇的心态下了下来看了看,
    (github:https://github.com/ZhaoKaiQiang/KLog), 看着看着就发现了一个很有趣的东西StackTraceElement, 故名思议就是java追踪栈的元素的封装类啦,点开源码后,很开心的发现了declaringClass, methodName, fileName, lineNumber 这4个属性,接下来就是自己测试测试啦, 测试发现,当调用Thread.currentThread().getStackTrace()后遍历打印调用方法名(我调用的方法顺序为:onClick()->Klog.a()->printLog()->Thread.currentThread().getStackTrace()), 输出结果: getThreadStackTrace->getStackTrace->printLog-> a->onClick....。

       总之,it这个行业不能老用旧的知识来限制自己(我开始就是这样), 有想法要先调研,然后再下结论!

      重复的东西索然无味: 

        http://www.cnblogs.com/java-boy/archive/2013/01/05/2845347.html  

        http://www.2cto.com/kf/201408/328680.html

  • 相关阅读:
    Vmware 添加虚拟磁盘
    2019-2020-2 《网络对抗技术》 Exp3 免杀原理与实践
    Docker 容器更换软件源
    Docker 查看容器 Linux 版本
    OpenMediaVault 5 进阶配置(四) Portainer 管理 Docker
    Portainer 中文文档:部署
    树莓派 部署 Docker 数据库容器
    通过Cookie统计上次网页访问时间
    用JavaMail通过QQ邮箱来发送邮件(第一篇博客,备忘)
    删掉双系统
  • 原文地址:https://www.cnblogs.com/zhangyan-2015/p/4981061.html
Copyright © 2020-2023  润新知