zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    setAnimationTransition:forView:cache: 运行动画时背景色问题
    架构师速成4.6-软技能和硬技能
    Java获取某年某周的第一天
    openssl之BIO系列之12---文件描写叙述符(fd)类型BIO
    centos 使用 CP 命令 不提示 覆盖
    [3 Jun 2015 ~ 9 Jun 2015] Deep Learning in arxiv
    P1314 聪明的质监员
    P2858 [USACO06FEB]奶牛零食Treats for the Cows
    1163 访问艺术馆
    P1352 没有上司的舞会
  • 原文地址:https://www.cnblogs.com/zhangyan-2015/p/4981061.html
Copyright © 2011-2022 走看看