范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

工作3年啦,你竟然连Java日志体系都没闹懂?说不过去

  # 概要
  本文的目的是搞清楚Java中各种日志Log之间是怎么的关系,如何作用、依赖,好让我们平时在工作中如果遇到"日志打不出"或者"日志jar包冲突"等之类的问题知道该如何入手解决,以及在各种场景下如何调整项目中的各个框架的日志输出,使得输出统一。
  # Log日志体系
  在日常工作中我们可能看到项目中依赖的跟日志相关的jar包有很多,commons-logging.jar、log4j.jar、sl4j-api.jar、logback.jar等等,眼花缭乱。我们要正确的配置,使得jar包相互作用生效之前,就先要理清它们之间的关系。
  # 背景/发展史
  那就要从Java Log的发展历程开始说起。
  log4j(作者Ceki Gülcü)出来时就等到了广泛的应用(注意这里是直接使用),是Java日志事实上的标准,并成为了Apache的项目  Apache要求把log4j并入到JDK,SUN拒绝,并在jdk1.4版本后增加了JUL(java.util.logging)  毕竟是JDK自带的,JUL也有很多人用。同时还有其他日志组件,如SimpleLog等。这时如果有人想换成其他日志组件,如log4j换成JUL,因为api完全不同,就需要改动代码。  Apache见此,开发了JCL(Jakarta Commons Logging),即commons-logging-xx.jar。它只提供一套通用的日志接口api,并不提供日志的实现。很好的设计原则嘛,依赖抽象而非实现。这样应用程序可以在运行时选择自己想要的日志实现组件。  这样看上去也挺美好的,但是log4j的作者觉得JCL不好用,自己开发出slf4j,它跟JCL类似,本身不替供日志具体实现,只对外提供接口或门面。目的就是为了替代JCL。同时,还开发出logback,一个比log4j拥有更高性能的组件,目的是为了替代log4j。  Apache参考了logback,并做了一系列优化,推出了log4j2
  # 关系/依赖
  大概了解心路历程后,再详细看看它们之间的关系、依赖。
  JCL
  commons-logging已经停止更新,最后的状态如下所示:
  JCL支持日志组件不多,不过也有很人用的,例如Spring
  现在用的也越来越少了,也不多讲了
  SLF4J
  因为当时Java的日志组件比较混乱繁杂,Ceki Gülcü推出slf4j后,也相应为行业中各个主流日志组件推出了slf4j的适配
  图的意思为如果你想用slf4j作为日志门面的话,你如何去配合使用其他日志实现组件,这里说明一下(注意jar包名缺少了版本号,在找版本时也要注意版本之间是否兼容)
  slf4j + logback
  slf4j-api.jar + logback-classic.jar + logback-core.jar  slf4j + log4j
  slf4j-api.jar + slf4j-log4j12.jar + log4j.jar  slf4j + jul
  slf4j-api.jar + slf4j-jdk14.jar  也可以只用slf4j无日志实现
  slf4j-api.jar + slf4j-nop.jar
  SLF4J的适配
  slf4j支持各种适配,无论你现在是用哪种日志组件,你都可以通过slf4j的适配器来使用上slf4j。
  只要你切换到了slf4j,那么再通过slf4j用上实现组件,即上面说的。
  其实总的来说,无论就是以下几种情况
  你在用JCL
  使用jcl-over-slf4j.jar适配  你在用log4j
  使用log4j-over-slf4j.jar适配  你在用JUL
  使用jul-to-slf4j.jar适配
  我在网上盗一张图,给大家一个整体的依赖图(懒得画了)
  # 让Spring统一输出
  这就是为了对slf4j的适配做一个例子说明。
  Spring是用JCL作为日志门面的,那我们的应用是slf4j + logback,怎么让Spring也用到logback作为日志输出呢?这样的好处就是我们可以统一项目内的其他模块、框架的日志输出(日志格式,日志文件,存放路径等,以及其他slf4j支持的功能)
  很简单,就是加入jcl-over-slf4j.jar就好了。
  我又整了一个图来说明
  适配思路
  其实很简单
  你首先确认需要统一日志的模块、框架是使用哪个日志组件的,然后再找到sfl4j的适配器。  记得去掉无用的日志实现组件,只保留你要用的。
  # 常见问题
  slf4j的日志加载会在程序启动时把日志打出来,所以一定要注意,它会说明加载是否成功,加载了那个日志实现。
  slf4j已经对错误作了说明:
  http://www.slf4j.org/codes.html
  下面讲一下可能经常遇到的问题
  Failed to load class org.slf4j.impl.StaticLoggerBinder
  没找到日志实现,如果你觉得你已经写上了对应的日志实现依赖了,那你要检查一下了,一般来说极有可能是版本不兼容。
  Multiple bindings
  找到多个日志实现,slf4j会找其中一个作为日志实现。
  # 代码规范
  阿里对此的代码规范:
  【强制】应用中不可直接使用日志系统(Log4j、Logback)中的 API,而应依赖使用日志框架 SLF4J 中的 API,使用门面模式的日志框架,有利于维护和各个类的日志处理方式统一。
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
  private static final Logger logger = LoggerFactory.getLogger(Abc.class);
  文章来源:albenw.github.io/posts/854fc091/

2021年适合老人使用的几款性价比百元机对于老人来说,购买一款手机大多数只在意以下几个方面一是大音量,作为老人使用的手机音量问题必须要能够很好的满足老人使用,由于一些老人年纪大了,耳朵有些许听不清了,所以一部适合老人用的美国3万亿财团访华,落地直奔华为总部,任正非霸气拒绝我不见众所周知,美国采用科技霸凌的手段对我国科技巨头进行打压,对华为中兴等通讯巨头造成不小的损失。美国在5G领域落后了,想通过打压华为来阻碍我国在5G领域的发展,但是美国失算了,华为并不华为再次强调不放弃不出售,努力让用户买到5G手机华为不会出售放弃手机业务。华为举行了全连接2021大会,发布了面向数字基础设施的开源操作系统欧拉(openEuler),同时大会谈到了数字化昇腾AI数字基座等议题。期间,华为轮值董带你看看新能源比亚迪宋PLUSDMi的新一面现在很多人都在关注新能源汽车行业的发展,无论是节能环保方面还是汽车本身的技术创新,广大车友都对未来汽车行业的走向抱有更多的期待,比亚迪这两年的发展之快尤为可见,一批批新能源产品的上民营运营商要打翻身仗?5G套餐低至9元起一直以来,国内的手机用户在提到通信运营商时,想到的都是三大运营商中国移动中国联通中国电信这三家,但甚少有人知道民营运营商的存在,有的人用着民营运营商的手机卡还以为自己是在用三大运营马斯克雷军沈南鹏等大佬齐聚一堂!14项世界互联网领先科技成果发布,鸿蒙排榜首9月26日,2021年世界互联网大会乌镇峰会在浙江乌镇开幕。今年大会的主题为迈向数字文明新时代携手构建网络空间命运共同体。大会首日,阿里巴巴董事会主席兼首席执行官张勇特斯拉CEO马芯荒未解,电池荒又至,宁德时代们心慌慌本文系深潜atom第340篇原创作品动力电池作为新能源汽车的核心部件,重要性不言而喻。在缺芯问题尚未解决之前,电池荒也成为当前新能源汽车行业面临的严峻问题之一。根据SNEResea对话十四五来源中央纪委国家监委网站目前北斗创新应用在国内的发展趋势是怎样的?推动北斗与各行各业的融合和规模化应用,需要关注的重点有哪些?如何看待北斗与5G之间的联合?在日前召开的北斗应用相关比亚迪上新了,汉EV再推新内外配色不知不觉,比亚迪旗舰轿车汉上市至今也有一年多了,EV版和DM版累计销量已经超过了11万台(截止8月份),这个惊人的成绩在整个国产豪车领域都算是史无前例的突破。近日,比亚迪汽车发布了三星S22Ultra渲染图曝光方正机身内置SPen!Note和S合并了?早前有传闻称三星S22系列将会内置SPen机身设计也会更加偏向Note系列方正硬朗的外形。而Note系列则会有很大概率被取消,下半年的旗舰产品由折叠屏系列接棒。近日,爆料大神Onl59至179米蓝牙耳机推荐首先呢,大家要知道,挑选一百元左右的耳机,要求不能太高,基本的是AAC解码至以上,TypeC接口,半入耳和入耳自行选择就行,千万别买贴牌耳机,如威特,想,极人,体验极差,推荐的这些
在玩异度之刃决定版之前,你必须要知道的事情异度之刃决定版将在5月29日正式登陆Switch平台,作为一款2010年6月发售于Wii平台,并在2015年4月移植到3DS的游戏,可能在Switch玩家看来还是不如那个很大的异度星战前夜晨曦在一场绚丽的烟火中,新伊甸ampampquot星辰ampampquot再次闪耀5月4日晚上8至9点之间,星战前夜晨曦(EVEOnline国服)新伊甸的星空中,艾玛星系凯迪斯女皇一世仪仗队守卫上方,一场盛大的烟火庆典如期举行。无数玩家驾驶着自己的舰船,在无垠的违法!20号发上月工资被员工起诉,获赔5。4万!怎样发工资不违法公司每月20号发工资,违法?想必每一个职场人,在工作中最开心的日子就是发工资的那天了,毕竟在当代社会生活压力越来越大的情况下,谁不是期待着发薪续命呢!对于很多工薪族来说,工资发了就刚刚!员工长期工资5000元以下被查了!2021年,这样发工资将严查今年税务稽查与往年最大的区别之一就在于个税方面,而个税的重点就是工资薪金,企业还这样发工资,要小心了!突发,员工工资5000元被查了补税罚款120万元!我们先来看一个稽查案例这就是switch玩什么射击游戏篇未能畅快射,午时还没到从switch玩什么这档栏目建立到现在,评测君已经和小伙伴们分享了上百款各种各样的游戏,从动作冒险角色扮演到战棋和格斗,基本每次都可以找到充足的内容。但这回评测君在准备射击游戏篇时switch实体卡or数字版?数字版游戏优点分析及购买推荐最近有不少新加入Switch大家庭的小伙伴来私信评测君问这么一个问题买游戏要选实体版还是数字版,这俩又有什么区别呢?所以今天评测君就来为大家整理一下Switch游戏实体版和数字版的游戏玩家的心声主线任务是什么?种菜养鸡才是正事巫师中的猎魔人沉迷打牌,抛妻弃子最终幻想15里的王子沉迷钓鱼,无心复国不知道从何时起,在这样的开放世界游戏里,总有各种脑洞大开的奇葩小玩法,看似微不足道,却总能让玩家们玩得忘乎所以圣剑传说3重制版评测基于原版的粉丝向经典重制花了将近30小时通关了圣剑传说3重制版的一周目剧情和额外隐藏内容之后,评测君陷入了沉思。说实话,日式RPG一直以来都是我最不愿意评测的游戏类型。一是因为日式RPG需要投入大量时间来2020新手小白购买Switch需要知道哪些知识RE,干货大全!在2019年6月8日,彼时还是个渣麦萌新UP的评测君曾经发过一期内容,叫做新手小白购买Switch需要知道哪些知识?最全干货,可能确实当时的内容为不少小伙伴入坑选购提供了一定帮助,动物之森联机加速选哪个?跳楼价60包年联机有他就够了说起来动物之森最近几个月来真是风靡了我的大半个朋友圈大半个微博大半个游戏群,走到哪哪里都是动森留下的身影,但相信有很多朋友都有这样一个疑问,动森究竟到底哪点这么让人上头能成为现象级海贼无双4评测和之国决战凯多花了15个小时通关了海贼无双4的主线剧情放下手柄回味,作为一个海贼粉丝评测君很难说感受到了当初看漫画时的冲击,倒不是说这个游戏体验味同嚼蜡,但确实有点食之无味弃之可惜,不过仔细想想