• 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

  • 相关阅读:
    Windows故障恢复控制台使用方法
    Windows XP SP2下安装WinCC V6.0 SP3 的安装步骤
    Windows Server2003 安装WinCC6.2 sp2
    pb6.5不兼容Oracle10g
    Windows Server 2003 Sp2 雨林木风版
    移动硬盘WINPE启动盘安装GHOST系统图解
    Vista硬盘安装详细图解
    系统的层次性与单一职责原则
    用dynamic增强C#泛型表达力
    谈单元测试的状态验证和行为验证
  • 原文地址:https://www.cnblogs.com/zhangyan-2015/p/4981061.html
Copyright © 2020-2023  润新知