前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >日志那些事儿——日志Logger漫谈

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

作者头像
LNAmp
发布2018-09-05 15:42:56
1.1K0
发布2018-09-05 15:42:56
举报

前言

最近在关注限流、降级、监控等系统稳定性方面的技术,反复牵涉到的几个技术名词是日志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?
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016.08.06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 日志系统的发展
  • 如何选择和搭配日志系统
  • 组装日志系统
  • 总结
相关产品与服务
消息队列 TDMQ
消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档