log4j、log4j2、slf4j、logback的使用

博客介绍了log4j、log4j2、slf4j、logback的使用,包括单独使用各日志框架的依赖、不使用日志实现的情况,还给出了slf4j分别与log4j、log4j2的maven配置,同时说明了log4j升级到log4j2时,未使用和使用slf4j的不同处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sunny_ww

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值