本文共 1639 字,大约阅读时间需要 5 分钟。
日志框架系列讲解文章
在前文 中,我介绍了日志框架的使用。
但读者看到了可能云里雾里的,因为没有代码也没有设计说明。所以你猜的没错!这一次就要来向各位观众揭示这小玩意里面的道道。
在已经解释过为什么要新造一个日志框架。
但我想靠文字不能有深切的体会。 下面是我在读别人代码时经常看到的代码:logger.info("#{}#{}#{}#{}#{}", new String[]{ orderInfo.getOrderNo() /*订单号*/, orderInfo.getTradeCode() /*交易代码*/, orderInfo.getReqSys() /*请求方系统*/, orderInfo.getLocale() /*区域代码*/, "req done" /*日志内容*/})
没有粗暴的用字符串相加,说明开发人员已经有一点水平了,但是……
这段代码意味着多糟糕的事情呢!?
写上面这段代码的可能是某个加班熬夜到神志模糊的程序员,更糟的是他借差迷糊劲把其中的两行写反了! 不对照着日志规范细扣,基本没有人能发现问题。
为了让WEB层的Controller与业务层的Service都能这样打印,Service层接口硬生生插入一个orderInfo,变成这样。
public void service(SomeThing toServed, OrderInfo orderInfo)
业务代码里面充斥着这样的代码,写的人不知疲倦,看的我心烦意乱了。
于是乎,我下定决心!要有一个日志框架,好好教人打日志。logger.info("req done" /*日志内容*/)
必须像上面这样写日志代码,其它的内容全部实现自动填充!
好!现在就来开始动手设计理想中的框架。但是在动手之前,还需要想清楚两件事。
考虑到以上两点,并结合我们应用常见的开发场景,我最终选定这个框架基于spring-boot实现。因为spring-boot提供了众多实用的机制可供选择。享受spring-boot带来便利的同时,也为spring-boot做一些贡献,互利互惠。
如图展示,里层绿色为应用层,指业务开发人员编写的业务代码;外层蓝色部分为框架层,包含日志框架的各个功能模块。
简单地说,日志框架有以下要点:
具体代码实现,且听下回分解。
日志框架系列讲解文章
转载地址:http://trwsl.baihongyu.com/