首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >日志那些事儿——日志Logger漫谈

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

作者头像
LNAmp
发布于 2018-09-05 07:42:56
发布于 2018-09-05 07:42:56
1.2K0
举报

前言

最近在关注限流、降级、监控等系统稳定性方面的技术,反复牵涉到的几个技术名词是日志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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
JAVA日志的前世今生
直到今天,静儿为了写文章,把自己蒙在空调被里,额,竟然连不上网。于是掀起一个被角,“大象”的巡检结果哒哒哒的弹出来了。然后我感慨:自己当年何苦买那么贵一个“围裙”。
静儿
2018/08/14
6500
JAVA日志的前世今生
日志那些事儿——由一次bug引发的思考-client jar应该如何输出日志
前面几篇“日志那些事儿”讲解了日志的重要性和相关使用。以slf4j+logback的使用为例,我们的步骤为:
LNAmp
2018/09/05
5350
聊聊这些年我们用过的Java日志框架
日志框架是每个系统必备的功能之一,在日常使用当中却往往没有得到应有的重视,要么跟随“前辈”,原来用什么就用什么,要么随便选择一个……甚至还有项目大量使用System.out.println来打印日志……
程序新视界
2020/10/29
7650
聊聊这些年我们用过的Java日志框架
【SpringBoot专题】Java平台下日志的那些事前言日志框架漫谈看SpringBoot如何对日志进行统一处理SpringBoot日志使用结束语
本篇是【SpringBoot专题】系列的第三篇,将介绍SpringBoot对日志的支持,讲解Java平台下日志的那些事,彻底揭开日志框架在使用过程中的那些坑~
用户2890438
2018/08/21
6020
【SpringBoot专题】Java平台下日志的那些事前言日志框架漫谈看SpringBoot如何对日志进行统一处理SpringBoot日志使用结束语
日志那些事儿——谈谈需要日志输出的client jar应该如何设计
上篇文章提到了应该如何设计需要输出日志的client jar,大概有三个比较重要的点。
LNAmp
2018/09/05
6680
日志那些事儿——谈谈需要日志输出的client jar应该如何设计
走进JavaWeb技术世界9:Java日志系统的诞生与发展
本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看
Java技术江湖
2019/10/22
5090
全网最全、最细致的Java日志框架以及门面技术。
👨‍🎓作者:Java学术趴 🏦仓库:Github、Gitee ✏️博客:CSDN、掘金、InfoQ、云+社区 💌公众号:Java学术趴 🚫特别声明:原创不易,未经授权不得转载或抄袭,如需转载可联系小编授权。 🙏版权声明:文章里的部分文字或者图片来自于互联网以及百度百科,如有侵权请尽快联系小编。微信搜索公众号Java学术趴联系小编。 ☠️每日毒鸡汤:生活是世上最罕见的事情,大多数人只是存在,仅此而已。 👋大家好!我是你们的老朋友Java学术趴,今天继续给大家分享小趴Java日志框架。对于一个应用程序来说
Java学术趴
2021/09/10
4.2K0
还不了解,日志框架吗?
经过上面,我们已经知道常用的日志框架有:Log4j JUL JCL Slf4j Logback Log4j2
Java_慈祥
2024/08/06
2840
还不了解,日志框架吗?
SpringBoot整合日志框架
​ 1、System.out.println("");将关键数据打印在控制台;去掉?写在一个文件?
别团等shy哥发育
2023/02/25
7740
SpringBoot整合日志框架
java日志commons-logging/log4j/slf4j/logBack需要知道的几件事
如果对于commons-loging、log4j、slf4j、LogBack等都已经非常清楚了,可以忽略本文。几次解决日志冲突问题时对这几个概念的简单总结,希望对这块基础没有理解透的同学能有所帮助,当然如果对这块有更深刻理解的同学,也贡献出自己的知识和见解。
一个会写诗的程序员
2018/08/17
8160
java日志commons-logging/log4j/slf4j/logBack需要知道的几件事
Spring入门到精通-日志体系
日志是我们工作中经常提及的内容,但是我们很少关心他的实现原理,基本的都是直接使用别人配置好的东西,那么这么多的日志框架,他是如何做到日志的统一打印呢,spring是如何实现的,springboot是如何实现,又有哪些日志框架呢,具体是如何实现以及选择的呢
小土豆Yuki
2023/09/02
1920
Spring入门到精通-日志体系
JAVA日志发展史
2001年以前,Java是没有日志库的,打印日志全凭System.out和System.err
用户9282069
2021/12/13
7590
JAVA 应用日志最佳实践
Java 界的日志解决方案很多,让人眼花缭乱,但常用的包括 JUL,JCL,SLF4J,Logback,Log4j / Log4j2 等。
鲍远林
2020/07/29
3.4K0
JAVA 应用日志最佳实践
『互联网架构』软件架构-java日志体系(17)
简单来说,该模式就是把一些复杂的流程封装成一个接口供给外部用户更简单的使用。这个模式中,设计到3个角色。
IT架构圈
2019/03/19
4630
『互联网架构』软件架构-java日志体系(17)
java日志门面之JCL和SLF4J
随着系统开发的进行,可能会更新不同的日志框架,造成当前系统中存在不同的日志依赖,让我们难以统一的管理和控制。借鉴JDBC的思想,为日志系统也提供一套门面,那么我们就可以面向这些接口规范来开发,避免了直接依赖具体的日志框架。这样我们的系统在日志中,就存在了日志的门面和日志的实现。
Java微观世界
2025/01/21
1280
java日志门面之JCL和SLF4J
【编程开发】- 01 日志框架
Log4j是目前最为流行的Java日志框架之一,1999年发布首个版本,2012年发布最后一个版本,2015年正式宣布终止,官方也已不建议使用,并逐步被Logback和Log4j2等日志框架所替代,可是无法掩饰光辉历程,以及优良的设计理念。尽管Log4j有着出色的历史战绩,但早已不是Java日志框架的最优选择,还在使用该日志框架的项目往往是历史遗留问题。
Reactor2020
2023/03/22
1.4K0
【编程开发】- 01 日志框架
Java日志体系权威总结
本文的目的是搞清楚Java中各种日志Log之间是怎么的关系,如何作用、依赖,好让我们平时在工作中如果遇到“日志打不出”或者“日志jar包冲突”等之类的问题知道该如何入手解决,以及在各种场景下如何调整项目中的各个框架的日志输出,使得输出统一。
程序猿DD
2020/12/18
5690
Java日志体系权威总结
SpringBoot 笔记 ( 三 ):日志系统
SpringBoot 笔记 ( 三 ):日志系统 1、日志框架 日志框架就是防止我们再去像以前那样,一直进行System.out.println(“”)将关键数据打印在控制台。框架来记录系统的一些运行时信息,但是随着日志框架的增长,和接口的不一致,导致了使用上的差别很大,​这里采用了一个类似于数据库驱动的模式,数据库驱动是 Java 提供的一个 API,然后真正的实现是需要各个数据库厂商去完成的,而 log 也开始采用这种面向接口编程的方法采用日志抽象层。 市面上的日志框架 JUL、JCL、Jboss-l
lwen
2018/04/16
2.1K0
Java日志框架那些事儿
在项目开发过程中,我们可以通过 debug 查找问题。而在线上环境我们查找问题只能通过打印日志的方式查找问题。因此对于一个项目而言,日志记录是一个非常重要的问题。因此,如何选择一个合适的日志记录框架也非常重要。 在Java开发中,常用的日志记录框架有JDKLog、Log4J、LogBack、SLF4J、SLF4J。这些日志记录框架各有各的特点,各有各的应用场景。了解这些框架的特点及应用场景,有利于我们做技术选型的时候做出正确的判断。 JDKLog:日志小刀 JDKLog是JDK官方提供的一个记录日志的方式
陈树义
2018/04/13
1.9K0
Java日志框架那些事儿
教你全方位解决Java 日志框架冲突!
你是否遇到过配置了日志,但打印不出来的情况?你是否遇到过配置了 logback,启动时却提示 log4j 错误的情况?像下面这样:
二哥聊运营工具
2022/07/11
1.1K0
教你全方位解决Java 日志框架冲突!
相关推荐
JAVA日志的前世今生
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档