Java 在Spring Boot应用程序中使用log4j2进行日志记录

Java 在Spring Boot应用程序中使用log4j2进行日志记录,java,spring,maven,logging,log4j2,Java,Spring,Maven,Logging,Log4j2,我正在努力学习春靴。但我完全搞砸了一个伐木工人。 我有一个简单的pom: <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency>

我正在努力学习春靴。但我完全搞砸了一个伐木工人。 我有一个简单的pom:

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- Logging -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>2.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>2.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
            <version>2.3</version>
        </dependency>
    </dependencies>
但当应用程序启动时,我看到:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/Users/me/.m2/repository/ch/qos/logback/logback-classic/1.1.3/logback-classic-1.1.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/Users/me/.m2/repository/org/apache/logging/log4j/log4j-slf4j-impl/2.3/log4j-slf4j-impl-2.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [ch.qos.logback.classic.util.ContextSelectorStaticBinder]
当然,log4j2及其配置不起作用


我知道,这是一个非常流行的问题。我在谷歌上搜索了很多答案,但都不适合我。

在类路径中有多个SLF4J绑定

  • Logback classic,默认情况下包含在spring引导中
  • 要使用的Log4j

通过使用maven依赖项排除,您需要在类路径中有一个单独的日志。

您必须排除与spring boot starter批处理捆绑在一起的logback,并将其替换为spring-boot-starter-log4j2。检查日志记录和Spring引导

这个pom配置对我来说很好

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-batch</artifactId>
        <version>${spring.boot.version}</version>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j2</artifactId>
        <version>${spring.boot.version}</version>
    </dependency>

org.springframework.boot
弹簧靴起动器批次
${spring.boot.version}
org.springframework.boot
spring启动程序日志记录
org.springframework.boot
spring-boot-starter-log4j2
${spring.boot.version}

我现在不确定。我是新手,刚刚开始学习这一切。谢谢,我将继续使用Logback。因此,我在POM或etc中无事可做,Logback默认存在,对吗?阅读Logback文档以使用Logback配置日志,并删除与log4j相关的依赖项。或者阅读关于logging.Log4j的spring引导文档,但他想使用log4j2,据我所知,它是积极维护的。
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-batch</artifactId>
        <version>${spring.boot.version}</version>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j2</artifactId>
        <version>${spring.boot.version}</version>
    </dependency>