多应用中间的日志使用,log4j,log4j2,logback三个日志框架为例

author author     2023-01-10     521

关键词:


多应用中间的日志使用,log4j,log4j2,logback三个日志框架为例

  • ​​分别使用三个日志框架建好测试​​
  • ​​log4j​​
  • ​​log4j2​​
  • ​​logback​​
  • ​​上面的三个同时引入一个应用中​​
  • ​​将日志统一使用slf4j标准​​
  • ​​不能修改pom文件如何操作统一日志格式​​
  • ​​log4j2 桥接器​​

多应用中间的日志使用,log4j,log4j2,logback三个日志框架为例_mvc

分别使用三个日志框架建好测试

log4j

依赖:

<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>

测试代码

import org.apache.log4j.Logger;
//import org.slf4j.LoggerFactory;

public class MyLog4j

public void test1()

Logger logger = Logger.getLogger(MyLog4j.class);
logger.info("MyLog4j "+ logger.getClass().getName());
logger.error("MyLog4j "+ logger.getClass().getName());


// public void test2()
// org.slf4j.Logger logger = LoggerFactory.getLogger(MyLog4j.class);
// logger.info("MyLog4j test2 clzz= ",logger.getClass().getName());
//

public static void main(String[] args)
new MyLog4j().test1();
// new MyLog4j().test2();

效果

多应用中间的日志使用,log4j,log4j2,logback三个日志框架为例_mvc_02

log4j2

依赖:

<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.14.1</version>
</dependency>

测试代码

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
//import org.slf4j.LoggerFactory;

public class MyLog4j2

public void test()
Logger logger = LogManager.getLogger();
logger.info("MyLog4j2 clzz=",logger.getClass().getName());

public void test2()
// org.slf4j.Logger logger = LoggerFactory.getLogger(MyLog4j2.class);
// logger.info("MyLog4j test2 clzz= ",logger.getClass().getName());


public static void main(String[] args)
new MyLog4j2().test();
new MyLog4j2().test2();

效果

多应用中间的日志使用,log4j,log4j2,logback三个日志框架为例_mvc_03

logback

依赖:

<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.5</version>
</dependency>

测试代码

在这里插入代码片

配置文件:

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class MyLogBack


public void test()
Logger logger = LoggerFactory.getLogger(MyLogBack.class);
logger.info("MyLogBack clzz=",logger.getClass().getName());


public static void main(String[] args)
new MyLogBack().test();

效果

多应用中间的日志使用,log4j,log4j2,logback三个日志框架为例_java_04

上面的三个同时引入一个应用中

添加依赖:

<dependency>
<groupId>log</groupId>
<artifactId>mylog4j</artifactId>
<version>1.0-SNAPSHOT</version>
<!--<exclusions>-->
<!--<exclusion>-->
<!--<groupId>org.slf4j</groupId>-->
<!--<artifactId>slf4j-log4j12</artifactId>-->
<!--</exclusion>-->
<!--</exclusions>-->
</dependency>
<dependency>
<groupId>log</groupId>
<artifactId>MyLog4j2</artifactId>
<version>1.0-SNAPSHOT</version>
<!--<exclusions>-->
<!--<exclusion>-->
<!--<groupId>org.apache.logging.log4j</groupId>-->
<!--<artifactId>log4j-slf4j-impl</artifactId>-->
<!--</exclusion>-->
<!--</exclusions>-->
</dependency>
<dependency>
<groupId>log</groupId>
<artifactId>myLogBack</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
public class SDK2 

public static void main(String[] args)
new MyLog4j2().test();
new MyLog4j().test1();
new MyLogBack().test();

// new MyLog4j2().test2();
// new MyLog4j().test2();
// new MyLogBack().test();

多应用中间的日志使用,log4j,log4j2,logback三个日志框架为例_java_05

从上面我们发现完全是可以的每个应用使用自己的日志,但是这样我们发现日志打出来就是五花八门,不能使用同一的格式输入,我们如何操作

将日志统一使用slf4j标准

多应用中间的日志使用,log4j,log4j2,logback三个日志框架为例_jar_06


根据这个手写方案进行修改:

将上面的代码注释部分放开即可,这里不贴代码了

说明一定logback已经实现了slf4j的标准:所以不需要处理

多应用中间的日志使用,log4j,log4j2,logback三个日志框架为例_java_07

多应用中间的日志使用,log4j,log4j2,logback三个日志框架为例_mvc_08


上面这个警告比较好处理排除掉就可以:

<dependencies>
<dependency>
<groupId>log</groupId>
<artifactId>mylog4j</artifactId>
<version>1.0-SNAPSHOT</version>
<!--<exclusions>-->
<!--<exclusion>-->
<!--<groupId>org.slf4j</groupId>-->
<!--<artifactId>slf4j-log4j12</artifactId>-->
<!--</exclusion>-->
<!--</exclusions>-->
</dependency>
<dependency>
<groupId>log</groupId>
<artifactId>MyLog4j2</artifactId>
<version>1.0-SNAPSHOT</version>
<!--<exclusions>-->
<!--<exclusion>-->
<!--<groupId>org.apache.logging.log4j</groupId>-->
<!--<artifactId>log4j-slf4j-impl</artifactId>-->
<!--</exclusion>-->
<!--</exclusions>-->
</dependency>
<dependency>
<groupId>log</groupId>
<artifactId>myLogBack</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>

想使用那个就把不需要使用的排除掉:

多应用中间的日志使用,log4j,log4j2,logback三个日志框架为例_java_09


多应用中间的日志使用,log4j,log4j2,logback三个日志框架为例_mvc_10

这已经很方便了发现,也可以完全达到我们的目的了,格式统一,但是有一个问题就是,我们这个地方是我们自己写的应用可以随时修改pom文件,直接统一升级到slf4j标准,但是如果我们使用的是第三方jar包如何办,里面的pom文件没法升级,同时jar也没有实现slf4j标准

不能修改pom文件如何操作统一日志格式

这里我使用my2log4j 和 mylogback两个模块演示
这两个分别使用log4j 和 mylogback

sdk3 进行测试:
依赖:

<dependencies>

<dependency>
<groupId>log</groupId>
<artifactId>my2log4j</artifactId>
<version>1.0-SNAPSHOT</version>
<exclusions>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>


<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>1.7.32</version>
</dependency>
<dependency>
<groupId>log</groupId>
<artifactId>myLogBack</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>

思路就是:讲log4j中的依赖排除掉,使用桥接器来实现,

<dependency>
<groupId>org.slf4j</groupId>
<artifactId>log4j-over-slf4j</artifactId>
<version>1.7.32</version>
</dependency>

多应用中间的日志使用,log4j,log4j2,logback三个日志框架为例_java_11


也达到格式统一的要求了;

依赖关系:

多应用中间的日志使用,log4j,log4j2,logback三个日志框架为例_zookeeper_12

log4j2 桥接器

<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-to-slf4j</artifactId>
<version>2.13.3</version>
</dependency>

原理都一样的不再赘述了

这一篇完全从操作层面出发,下一篇从理论讲解一下

总结:

1.自己使用日志,全部使用slf4j
2.如果引用第三方jar,第三方没有使用slf4j这种日志门面,而是直接使用的日志实现框架
a。如果可以修改源码的情况可以将日志第三方jar升级到slf4j标准
b。如果不可以修改源码的情况下,我们引用第三方jar,排除其使用的日志实现,利用slf4j的桥接器来实现升级到slf4j

ps: 在引用jar包时一定要排除日志实现jar,不然会导致不起作用

slf4j的桥接器如下图:

多应用中间的日志使用,log4j,log4j2,logback三个日志框架为例_java_13

多应用中间的日志使用,log4j,log4j2,logback三个日志框架为例_jar_14


多应用中间的日志使用,log4j,log4j2,logback三个日志框架为例_jar_15


多应用中间的日志使用,log4j,log4j2,logback三个日志框架为例_zookeeper_16


log4j日志组件的使用

日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。在apache网站:jakarta.apache.org/log4j 可以免费下载到Log4j最新版本的软件包。1.新建一个Java工程,导入包log4j-1.2.17.jar,整... 查看详情

java应用在java中使用log4j/logback进行日志记录和调试

...留言,分享想法和建议。谢谢支持!相关阅读:​​Java应用【六】Java反射:动态类加载和调用教程​​​​Java应用【七】使用Java实现数据结构和算法:排序、查找、图​​​​Java应用【八】使用网络编程进行socket通信​​【... 查看详情

日志学习-log4j

(一)Logger.getLogger()和LogFactory.getLog()的区别    1.Logger.getLogger()是使用log4j的方式记录日志;    2.LogFactory.getLog()则来自apache的common-logging包。(二)log4jlog4j需要导入的包 一般使用l 查看详情

log4j使用教程

日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。在apache网站:jakarta.apache.org/log4j 可以免费下载到Log4j最新版本的软件包。一、入门实例1.新建一个JAva工程,导入包log4... 查看详情

log4j-使用教程说明(代码片段)

地址:http://www.codeceo.com/log4j-usage.html日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。在apache网站:jakarta.apache.org/log4j 可以免费下载到Log4j最新版本的软件包。一、入... 查看详情

log4j使用总结

...在功能代码涉及不多的情况下,确实比较方便。但是若从应用的角度来看,特别是业务越来越复杂的多应用的场景,日志等级、日志格式、日志文件、日志查看、问题定位、甚至后续的日志收集等方面来看,对于纯粹的System.out.p... 查看详情

1.5log4j使用教程

日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。在apache网站:jakarta.apache.org/log4j 可以免费下载到Log4j最新版本的软件包。一、入门实例1.新建一个JAva工程,导入包log4... 查看详情

log4j笔记:升级2.x版本的日志滚动问题

...log4j2.xml。在升级的过程中,配置与原先相同,使用异步日志,按小时滚动,却发现配置后日志输出正常,但滚动的功能不正常,查出以下两个问题。 1.日志不按小时滚动原来的配置如下:<RollingR 查看详情

最详细的log4j使用教程

日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。在apache网站:jakarta.apache.org/log4j 可以免费下载到Log4j最新版本的软件包。一、入门实例1.新建一个JAva工程,导入包log4... 查看详情

如何使用log4j记录日志

1.下载jar包http://logging.apache.org/log4j2.将jar包加入项目  放在lib(没有就创建)下  对已经复制过来的jar包鼠标点击右键,选中BuildPath ---》AddtoBuildPath  然后你会在项目中看到多了一个引入外包的项目:Library3.创建log4j.pr... 查看详情

log4j的使用,即java该如何使用日志文件

java使用日志文件log4j的方法:1、新建一个Java工程,导入Log4j包,pom文件中对应的配置代码如下:<!--log4jsupport--><dependency>  <groupId>log4j</groupId>  <artifactId>log4j</artifactId>  <version>1... 查看详情

log4j使用教程

转载:http://www.codeceo.com/article/log4j-usage.html日志是应用软件中不可缺少的部分,Apache的开源项目log4j是一个功能强大的日志组件,提供方便的日志记录。在apache网站:jakarta.apache.org/log4j 可以免费下载到Log4j最新版本的软件包。1.... 查看详情

log4j的多logger记录日志的简明使用(代码片段)

日志,应该是一个应用软件的基础功能之一。使用java语言,必然会使用一个日志库,我使用的是log4j的日志库。网上不少文章都有介绍,但是结合logger的不同功能介绍以及示例介绍的清楚的不多,至少我也是翻了不少网页,然后... 查看详情

如何使用 log4j2.xml 配置休眠日志记录?

】如何使用log4j2.xml配置休眠日志记录?【英文标题】:Howtoconfigurehibernateloggingusinglog4j2.xml?【发布时间】:2014-02-0408:33:57【问题描述】:我最近切换到Apachelog4j2,但仍然找不到使用log4j2.xml配置休眠日志记录的方法。因为我找不到... 查看详情

log4j使用教程(代码片段)

在我们的应用程序中日志是不可缺少的部分,在Apache中由一个功能无比强大的日志组件,它提供了方便的日志记录,这个开源的项目就是我们惯用的Log4j,jar包我么们一颗取Apache官网下载最新版本的。log4j下载地址一.入门篇1.打... 查看详情

混合 log4j 1.x 和 log4j 2

...2014-11-1806:04:28【问题描述】:我有一个使用log4j2编写的新应用程序,以利用它的一些新功能。它使用的一个库有点老,是用log4j1.x构建的。我有一个问题,应用程序中的新代码写入日志,但旧库中的代码没有写入日志。我什至有... 查看详情

log4j/log4j2/logback混用问题

参考技术A如果不了解标题提到的几个日志框架,建议了解一下log4j/log4j2/logback简单使用说明,本节中pom依赖前面的内容;log4jdemolog4j2demologbackdemologdemojava项目一般会选择一种日志框架,但很难保证当前项目依赖的三方组件会选用... 查看详情

log4j日志框架的使用

java.util.logging.Logger——java中提供的日志类实际开发90%都是使用log4j记录日志,而Log4j底层就是java.util.logging.Logger实现的Log4j是一个日志输出框架,就是用于输出日志的。Mybatis的日志输出是通过Log4j输出的。主流框架大部分都... 查看详情