slf4j架构

Log4j日志集成

Logback日志集成

总结

分享的目的

一次性的解决应用中日志遇到的各种问题,包括:消除应用启动过程中与日志系统相关的无用错误提示,日志打印不出来的问题等;

Slf4j架构

  1. SLF4J,即简单日志门面(Simple Logging Facade for Java),不是具体的日志解决方案,它只服务于各种各样的日志系统。按照官方的说法,SLF4J是一个用于日志系统的简单Facade,允许最终用户在部署其应用时使用其所希望的日志System,通俗的讲,slf4j提供了目前Java日志系统的适配器;
  2. SLF4J所提供的核心API是一些接口以及一个LoggerFactory的工厂类,有点类似于JDBC,在使用SLF4J的时候,不需要在代码中或配置文件中指定你打算使用那个具体的日志系统(SPI)。如同使用JDBC基本不用考虑具体数据库一样,SLF4J提供了统一的记录日志的接口,只要按照其提供的方法记录即可,最终日志的格式、记录级别、输出方式等通过具体日志系统的配置来实现,因此可以在应用中灵活切换日志系统。

Log4j日志集成

公共的Maven依赖

<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>${slf4j.verson}</version>
</dependency>
<!-- 适配log4j -->
<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>${slf4j.verson}</version>
</dependency>
<!-- 适配jcl(Jakarta Commons Logging ) -->
<dependency><groupId>org.slf4j</groupId><artifactId>jcl-over-slf4j</artifactId><version>${slf4j.verson}</version>
</dependency>
<!-- 适配jul java.util.logging -->
<dependency><groupId>org.slf4j</groupId><artifactId>jul-to-slf4j</artifactId><version>${slf4j.verson}</version>
</dependency>

log4j依赖

<dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>${log4j.verson}</version>
</dependency>

排除的依赖

<exclusion><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId>
<exclusion><exclusion><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId>
<exclusion><exclusion><groupId>ch.qos.logback</groupId><artifactId>logback-access</artifactId>
<exclusion><exclusion><groupId>org.logback-extensions</groupId><artifactId>logback-ext-spring</artifactId>
<exclusion><exclusion><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId>
</exclusion>

Logback日志集成

公共的Maven依赖

<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>${slf4j.verson}</version>
</dependency>
<!-- 适配log4j -->
<dependency><groupId>org.slf4j</groupId><artifactId>log4j-over-slf4j</artifactId><version>${slf4j.verson}</version>
</dependency>
<!-- 适配jcl(Jakarta Commons Logging ) -->
<dependency><groupId>org.slf4j</groupId><artifactId>jcl-over-slf4j</artifactId><version>${slf4j.verson}</version>
</dependency>
<!-- 适配jul java.util.logging -->
<dependency><groupId>org.slf4j</groupId><artifactId>jul-to-slf4j</artifactId><version>${slf4j.verson}</version>
</dependency>
<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId><version>${logback.version}</version>
</dependency>
<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>${logback.version}</version>
</dependency>
<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-access</artifactId><version>${logback.version}</version>
</dependency>
<dependency><groupId>org.logback-extensions</groupId><artifactId>logback-ext-spring</artifactId><version>0.1.2</version>
</dependency>

Logback依赖

<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-core</artifactId><version>${logback.version}</version>
</dependency>
<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>${logback.version}</version>
</dependency>
<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-access</artifactId><version>${logback.version}</version>
</dependency>
<dependency><groupId>org.logback-extensions</groupId><artifactId>logback-ext-spring</artifactId><version>0.1.2</version>
</dependency>

排除的依赖

<exclusion><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion><groupId>log4j</groupId><artifactId>log4j</artifactId>
</exclusion>
<exclusion><groupId>commons-logging</groupId><artifactId>commons-logging</artifactId>
</exclusion>

总结

  1. 当然大家在对自己的应用进行了相应的日志方案集成之后,最好也要在web.xml中配置日志的初始化的listener;
  2. 如果大家按照上面的方案对自己应用的日志系统进行了改造,你会发现,在应用启动的过程中,再也不会出现与日志系统本身集成相关的错误,更不会出现日志打不出来的现象,整个应用中日志打印出来是非常的干净;
  3. 当然统一日志集成不仅只有log4j和logback方案,还有其它方案,其它方案详见slf4j官方网站,地址链接是:https://www.slf4j.org/
  4. 因为logback日志比log4j更新,写日志的效率更高,更友好、更稳定,建议大家有时间统一把自己的应用日志系统切换到logback,log4j日志转换到logback 日志也是非常方便的,只需要按上面的要求替换相关的maven依赖,然后用logback官方的转换工具把log4j.propertiea配置文件转换成logback.xml的配置文件,如果是log4j.xml文件,转换到logback.xml更容易,只需要替换相关的appender即可,地址:https://logback.qos.ch/translator/

java日志统一集成的两种方案相关推荐

  1. php 集成 pdf.js,JavaScript_js插件方式打开pdf文件(浏览器pdf插件分享),两种方案:一种直接链接,把p - phpStudy...

    js插件方式打开pdf文件(浏览器pdf插件分享) 两种方案:一种直接链接,把pdf文件当作img文件,类似这种形式,这样链接: 另一种:使用js插件哈. 其中实现阅读pdf文件的js插件很多,比如: ...

  2. java textarea 大小_textarea高度自适应的两种方案

    阅读全文你将获得以下解决方案. 点击长文本编辑textarea,自动获得焦点 随着输入值自动伸缩高度 可复制添加信息 可粘贴文本 可粘贴图片 以下实例代码执行环境为Chrome80 方案一 HTML5 ...

  3. Net Core下使用RabbitMQ比较完备两种方案(虽然代码有点惨淡,不过我会完善)

    一.前言     上篇说给大家来写C#和Java的方案,最近工作也比较忙,迟到了一些,我先给大家补上C#的方案. 二.使用的插件     HangFire 一个开源的.NET任务调度框架,最大特点在于 ...

  4. Java框架篇---spring aop两种配置方式

    Java框架篇---spring aop两种配置方式 第一种:注解配置AOP 注解配置AOP(使用 AspectJ 类库实现的),大致分为三步:  1. 使用注解@Aspect来定义一个切面,在切面中 ...

  5. 解决IE6、IE7、IE8、Firefox兼容的两种方案

    转自:http://dyclh.iteye.com/blog/845349 浏览器不兼容,你知道源头吗? 凡事都要知其然,才能知其所以然,前端开发的朋友想毕都会碰到浏览器兼容的问题,今天在网上觅到此文 ...

  6. c语言 linux系统 delay,Linux下实现秒级定时任务的两种方案

    Linux下实现秒级定时任务的两种方案(Crontab 每秒运行): 第一种方案,当然是写一个后台运行的脚本一直循环,然后每次循环sleep一段时间. while true ;do command s ...

  7. 数据集成的两种架构:ELT和ETL

    数据集成的两种架构:ELT和ETL 集成是数据工程师要做的工作之一.一般来说,数据工程师的工作包括了数据的ETL和数据挖掘算法的实现.算法实现 可以理解,就是通过数据挖掘算法,从数据仓库中找到&quo ...

  8. 计算机网络实践之元气骑士公网异地联机(二) 两种方案可行性分析

    前言 在上一篇中,我已经通过分析得知了元气骑士在局域网联机过程中是通过UDP进行交互的,只要我们能正确的转发这些UDP消息,就能实现异地公网的联机了.转发UDP消息通常有两种方案:一个是通过UDP穿透 ...

  9. java 匿名list,java创造匿名对象的两种方法

    在java中有时候需要一些匿名对象的使用.可能有些小伙伴拿还不会创造,其实我们在学习一些方法时都或多或少的接触过.本篇所要讲到的创造匿名对象总结了两种方法,分别是静态工具方法和Lambda表达式,我们 ...

最新文章

  1. 中科院脑科学与智能技术卓越创新中心:在“脑海”中突破进取
  2. 为什么神经网络会把乌龟识别成步枪?现在的 AI 值得信任吗?
  3. 如何用jsp在线自动批改_推荐:5个好用的免费自动化在线营销工具
  4. linux c 编译错误 conflicting types for ‘xxx’
  5. cordova 强制竖屏
  6. OpenCV saturate_cast<uchar>函数用法(饱和剔除)(像素限制、溢出滤除、像素设限、防溢出)
  7. Apache Flink 零基础入门(八)Flink中指定算子的方式
  8. jupyter notebook_远程终端访问(win11 / ECS云服务器)
  9. ElasticSearch第二天
  10. .NET开发框架(二)-框架功能简述
  11. 台积电今年9月营收达302.1亿元 同比增长24.9%
  12. 怎么查看ingress的规则_Prometheus PormQL语法及告警规则写法
  13. 海量数据搜索---demo展示百度、谷歌搜索引擎的实现
  14. 计算方法--解线性方程组的直接法
  15. android 项目编译报错 符号: 类 shape 位置: 程序包 android.widget
  16. maven仓库镜像改为阿里巴巴
  17. webpack调用vue中报错, [WDS] Disconnected!解决方法
  18. node 对接微信支付的踩坑记录(服务端)
  19. word操作:如何修改字体(正确、规范、快捷)
  20. 一篇文章搞定嵌入式看门狗watch dog概述与示例代码

热门文章

  1. 年薪40万,我用的是这套Python学习体系
  2. 恢复快速启动中的“显示桌面”按钮
  3. 【OpenStack】OpenStack系列6之Sheepdog环境搭建
  4. Scala学习(二)练习
  5. Spring MVC Controller 要点
  6. 不快乐工作场所的生存法则
  7. 5G 承载网 — 三大运营商承载网技术的演进方向
  8. NanoPi NEO Air使用十一:编写SPI驱动点亮TFT屏幕,ST7789V
  9. KEIL MDK LIB库文件的制作
  10. 实现一个简单的WebSocket聊天室