日志那些事儿——日志Logger漫谈

前言

最近在关注限流、降级、监控等系统稳定性方面的技术,反复牵涉到的几个技术名词是日志log,Aop切片。

  • 限流降级怎么做?首先得对应用不要太侵入,那能想到的办法只能是使用Aop切片对需要限流降级的接口加一层校验。最近调研了公司相关的一些中间件,还蛮有收获,特别是关于如何稳定高效地获取qps、如何基于Spring进行Aop自定义扩展达到对于应用无侵入。
  • 监控怎么做?在单应用的情况下能想到的办法就是记录日志,然后通过脚本实时分析日志的关键词,当超过阈值的时候通知到相关人,日志在这个过程中起到的作用非常关键。在分布式或者现在很火的微服务架构的情况下,日志会分散到各个应用中,调用链的分析变得很重要,这方面的框架有Google Dapper、Twitter ZipKin、Ali的鹰眼等,调用链的分析依赖的是日志中的traceId,很多公司都是用的这一套。再或者还有其他监控的方式,考虑不将监控的日志写入到文件中,而只是放在内存中,以JMX的方式提供出去也是可以考虑的,要做到对现有应用代码不侵入的话,可以考虑给Root Logger配置写入内存的Fake Appender。
  • 最近还有一个需求,需要将一些业务信息进行埋点让BI分析,当然还是那个前提,对于应用代码的侵入越少越好,能想到的办法也只是Aop切片打日志然后采集然后分析,当然这其中有涉及到如何适配多重不同的日志系统(log4j or logback等) 前面说了这么多,也只是表明日志和Aop两大技术的重要性。当年开始学习Java的时候第一次接触日志还不知道干嘛用,现在知道干嘛用的但是却不知道其内部原理是啥?所以打算梳理一下java日志相关的技术点,Aop相关的技术点,了解了这两大技术点之后能做的事情就多了。

日志系统的发展

我们日常接触到的日志系统有很多种,log4j,JUL(jdk自带),logback等,我们可以直接根据对象的日志API进行使用。但是考虑到API各不相同,所以出现了JCL(Jakarta Commons Logging)、slf4j等日志API框架。日志API框架只是统一的API,其底层的具体的日志记录工作还是由log4j、JUL、logback等承担。这篇文章讲得非常清楚。

如何选择和搭配日志系统

目前来说,新应用使用logback是首选,一些老系统中很可能使用的是log4j等。目前slf4j对logback和log4j都支持,对JCL也提供了桥接方法,将JCL的api转化slf4j的API。贴一张Webx中的图足以说明一切(侵删)

日志系统.png

组装日志系统

由于存在JCL,SLF4j两大日志框架,logback、log4j、JUL日志系统所以理论上有这么多种日志系统的搭配。

  • JUL
  • log4j
  • logback
  • jcl+log4j
  • slf4j+slf4j-log4j12+log4j
  • slf4j+logback
  • jcl-over-slf4j+slf4j+logback
  • jcl-over-slf4j+slf4j+slf4j-log4j12+log4j

其中slf4j+slf4j-log4j12+log4j、slf4j+logback是主流,推荐使用。

总结

粗略漫谈了日志系统的历史,组装等。最后留下一个问题吧!

  • 我们通常会使用log4j.properties或者log4j.xml、logback.properties或者logback.xml来配置logger和appender,如何使用代码的方式进行配置?
  • 我们如何能通过代码判断系统中使用的是log4j还是logback?

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CSDN技术头条

GoSnaps:如何支持5天50万用户服务器只花100元

创业者们似乎有这样一个共识:初创公司应尽快推出MVP(最简可行产品)而不应该把扩展性这样的细节放在心上。总是有人给我说推产品是最高的也实际上是唯一的目标,扩展性...

220100
来自专栏申龙斌的程序人生

搞定GTD - 参考资料的归类方法

在GTD标准流程中,对于一些事情(Stuff)可能暂时无法采取具体行动,但将来还有用,那么它们就是参考资料,一定要做好归档。当项目开始运作时,要能够方便地找到。...

396100
来自专栏BestSDK

程序员那些悲催的事儿——从错误中学习进步

image.png 在StakeOverflow上有这样一个贴子叫“Confessions of your worst WTF moment”(WTF就是Wh...

296100
来自专栏编程

小白零基础编程到大佬级别是怎么学习Python的?

程序员在普通人眼里就像魔法师,一个脚本轻松抢几十盒月饼(虽然最后被开除),一个插件解决春运抢票难题,几十行代码搭建一个 Web 网站,用微信自动和妹纸聊天,在程...

39570
来自专栏斑斓

工具 | 我们推荐的高效工具

几天前,ThoughtWorks China咨询师团队召开了一次团结的大会,成功的大会。为期三天的会议,分享的内容并不亚于坊间举行的技术大会,包含了敏捷组织转型...

34160
来自专栏逸鹏说道

新浪微博UWP版-实现‘分享功能’的艰难路

索引 介绍 遇到的问题 寻求帮助 最终的解决方案 最终效果 介绍 在整个Team的共同努力下,在众多WPer的期待下,Weibo UWP版终于正式发布了。有关W...

37690
来自专栏编程

零基础如何自学Python

程序员在普通人眼里就像魔法师,一个脚本轻松抢几十盒月饼(虽然最后被开除),一个插件解决春运抢票难题,几十行代码搭建一个 Web 网站,用微信自动和妹纸聊天,在程...

51580
来自专栏信安之路

SCADA渗透测试

SCADA(Supervisory Control And Data Acquisition)即数据采集与监视控制系统。SCADA系统是以计算机为基础的DCS与...

25300
来自专栏vue+shiro

基于vue(element ui) + ssm + shiro 的权限框架

现在的Java世界,各种资源很丰富,不得不说,从分布式,服务化,orm,再到前端控制,权限等等玲琅满目,网上有句话说,语言框架迭代太快了,我学不动了,不如回去搬...

1.1K20
来自专栏编程一生

JAVA日志的前世今生

直到今天,静儿为了写文章,把自己蒙在空调被里,额,竟然连不上网。于是掀起一个被角,“大象”的巡检结果哒哒哒的弹出来了。然后我感慨:自己当年何苦买那么贵一个“围裙...

14720

扫码关注云+社区

领取腾讯云代金券