如何阅读Nutz的源码
推荐于2017-09-27 · 知道合伙人教育行家
开始学习框架思想了,打算先从nutz入手,因为nutz是国人写的,中文注释,容易理解
而且nutz框架比较小,但是麻雀虽小五脏俱全,大牛的思想还是可以学到的.
1、
这个是log的包信息,基本上有了一个大题的介绍
2.接口 public interface Log
五个级别trace,info,warn,debug,fatal这个都比较容易理解
提供了3个约等于重载的方法
他提工具了一个抽象实现类,实现了部分功能但是主要的输出还是在两个适配器中的内部类进行输出的
这个AbstractLog 提供了一个主要的方法makeInfo目的就是产生下面介绍的LogInfo 对象,
对之前的方法重载做统一处理
但是输出地还是在适配器的内部类当中
static class Log4JLogger extends AbstractLog
static class SystemLog extends AbstractLog
3.信息 LogInfo 定义的比较简单信息message,异常Throwable
4.日志适配器 (适配器模式出来了哈,不过我也用过适配器模式) LogAdapter
这里就把system.out.print和log4j进行了适配,再利用他的插件机制,动态获取
传送门http://www.cnblogs.com/wangjq/archive/2012/07/09/2582485.html
这里只定义一个方法获取log其实需要的也就这个
他提供3个适配器
1.NopLog 什么都不干适配器
2.SystemLogAdapter 这个应该很明显了输出到控制台
3.Log4jLogAdapter 这个应该是最常用也是最主要用的
不过最好再提供个SLF4jLogAdapter 这样看nuth的扩展性存在一点小问题
他是在这里写死的,不如配置的容易定义
5.Logs 这个也是最主要最常用的了
他静态初始化了适配器的
private static LogAdapter adapter;
然后提供静态方法 getLog这样就想平常一样调用上面的输出了
这里if感觉多此一举,既然这样判断何不在warn里面判断呢(效率问题),感觉这样写法有点蛋疼,
2024-09-19 广告
debug 这个更狠一些,顺着代码的执行,想深入的地方就进入,不感兴趣的地方就next,形成一个流程的概念.
看testcase 由于testcase是使用场景抽象出来的代码,所以很有参考价值.
附上几个Eclipse快捷键: ctrl+shift+T 查找某个类 ctrl+L 跳到具体的行数 alt+shift+b 打开源码视图上方的导航条,方便跳转到某个方法