log4j、log4j2、slf4j、logback的使用
1. 单独使用log4j的依赖
<!-- log4j1: 1.2.17 -->
<!-- ======================================================== -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- ======================================================== -->
2. 单独使用Log4j2的依赖
<!--log4j2: 2.20.0 -->
<!-- ======================================================== -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.20.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.20.0</version>
<exclusions>
<exclusion>
<artifactId>log4j-api</artifactId>
<groupId>org.apache.logging.log4j</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- ======================================================== -->
3. 单独使用logback的依赖
<!-- slf4j-simple -->
<!-- ======================================================== -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>2.0.7</version>
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- ======================================================== -->
5. 不使用任何日志实现
<!-- slf4j-nop -->
<!-- ======================================================== -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-nop</artifactId>
<version>2.0.7</version>
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- ======================================================== -->
6. slf4j + log4j的maven配置
<!-- 日志门面:slf4j-api 2.0.7-->
<!-- ======================================================== -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.7</version>
</dependency>
<!-- ======================================================== -->
<!-- log4j1: 1.2.17 -->
<!-- ======================================================== -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!-- ======================================================== -->
<!-- slf4j与log4j1的适配器:slf4j-reload4j 2.0.7-->
<!--slf4j-log4j 已经转变为 slf4j-reload4j-->
<!-- ======================================================== -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-reload4j</artifactId>
<version>2.0.7</version>
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- ======================================================== -->
7. slf4j + log4j2的maven配置
注意:slf4j + log4j2的适配器已经推荐使用 log4j-slf4j2-impl,而不是log4j-slf4j-impl。如果使用log4j-slf4j-impl,报如下错的话,说明你是slf4j 版本过高。
SLF4J: No SLF4J providers were found.
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See https://www.slf4j.org/codes.html#noProviders for further details.
SLF4J: Class path contains SLF4J bindings targeting slf4j-api versions 1.7.x or earlier.
SLF4J: Ignoring binding found at [jar:file:/Users/weiweizhou/Documents/develop/repositry/org/apache/logging/log4j/log4j-slf4j-impl/2.20.0/log4j-slf4j-impl-2.20.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See https://www.slf4j.org/codes.html#ignoredBindings for an explanation.
Process finished with exit code 0
<dependencies>
<!-- 日志门面:slf4j-api 2.0.7-->
<!-- ======================================================== -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.7</version>
</dependency>
<!-- ======================================================== -->
<!-- slf4j与log4j2的适配器:log4j-slf4j2-impl -->
<!-- log4j-slf4j-impl 已经转变为 log4j-slf4j2-impl-->
<!-- ======================================================== -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j2-impl</artifactId>
<version>2.20.0</version>
<exclusions>
<exclusion>
<artifactId>log4j-api</artifactId>
<groupId>org.apache.logging.log4j</groupId>
</exclusion>
<exclusion>
<artifactId>log4j-core</artifactId>
<groupId>org.apache.logging.log4j</groupId>
</exclusion>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<!--<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.20.0</version>
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
<exclusion>
<artifactId>log4j-core</artifactId>
<groupId>org.apache.logging.log4j</groupId>
</exclusion>
<exclusion>
<artifactId>log4j-api</artifactId>
<groupId>org.apache.logging.log4j</groupId>
</exclusion>
</exclusions>
</dependency>-->
<!-- ======================================================== -->
<!--log4j2: 2.20.0 -->
<!-- ======================================================== -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.20.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.20.0</version>
<exclusions>
<exclusion>
<artifactId>log4j-api</artifactId>
<groupId>org.apache.logging.log4j</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- ======================================================== -->
</dependencies>
8. log4j升级到log4j2:未使用slf4j
<dependencies>
<!-- 原项目采用 log4j1: 1.2.17 -->
<!-- ======================================================== -->
<!--<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>-->
<!-- ======================================================== -->
<!-- 新升级到 log4j2: 2.20.0 -->
<!-- ======================================================== -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.20.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.20.0</version>
<exclusions>
<exclusion>
<artifactId>log4j-api</artifactId>
<groupId>org.apache.logging.log4j</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- ======================================================== -->
<!-- log4j-1.2-api -->
<!-- ======================================================== -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-1.2-api</artifactId>
<version>2.20.0</version>
<exclusions>
<exclusion>
<artifactId>log4j-api</artifactId>
<groupId>org.apache.logging.log4j</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- ======================================================== -->
</dependencies>
9. log4j升级到log4j2:使用slf4j
<dependencies>
<!-- 日志门面:slf4j-api 2.0.7-->
<!-- ======================================================== -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.7</version>
</dependency>
<!-- ======================================================== -->
<!-- 原来项目使用 -->
<!-- slf4j与log4j1的适配器:slf4j-reload4j 2.0.7-->
<!-- slf4j-log4j12 已经转变为 slf4j-reload4j-->
<!-- ======================================================== -->
<!--<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-reload4j</artifactId>
<version>2.0.7</version>
<exclusions>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>-->
<!-- ======================================================== -->
<!-- 原来项目使用:log4j1: 1.2.17 -->
<!-- ======================================================== -->
<!--<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>-->
<!-- ======================================================== -->
<!-- 项目升级后使用 -->
<!-- slf4j与log4j2的适配器:log4j-slf4j2-impl -->
<!-- log4j-slf4j-impl 已经转变为 log4j-slf4j2-impl-->
<!-- ======================================================== -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j2-impl</artifactId>
<version>2.20.0</version>
<exclusions>
<exclusion>
<artifactId>log4j-api</artifactId>
<groupId>org.apache.logging.log4j</groupId>
</exclusion>
<exclusion>
<artifactId>log4j-core</artifactId>
<groupId>org.apache.logging.log4j</groupId>
</exclusion>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- ======================================================== -->
<!-- 项目升级后使用 -->
<!--log4j2: 2.20.0 -->
<!-- ======================================================== -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.20.0</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.20.0</version>
<exclusions>
<exclusion>
<artifactId>log4j-api</artifactId>
<groupId>org.apache.logging.log4j</groupId>
</exclusion>
</exclusions>
</dependency>
<!-- ======================================================== -->
</dependencies>