为什么我不能在log4j2-spring中使用springProfile标签.xml用不同的spring配置文件配置log4j2?



好吧,我有 3 个 Spring 配置文件:开发、生产、测试,我想在不同的配置文件中使用不同的 log4j2 配置。我检查了弹簧引导参考,并按照它所说的方式进行操作。但是当我运行 spring 应用程序时,我只得到下面的日志:

2018-03-05 09:52:32,194 main ERROR Error processing element SpringProfile ([Configuration: null]): CLASS_NOT_FOUND
2018-03-05 09:52:32,194 main ERROR Error processing element SpringProfile ([Configuration: null]): CLASS_NOT_FOUND

我用谷歌搜索并堆叠了错误日志,但仍然找不到为什么springProfile标签不起作用的答案。

这是我的log4j2-spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
    <SpringProfile name="prod">
        <Appenders>
            <RollingFile name="RollingFile"
                         fileName="/home/prod/service.log"
                         filePattern="/home/prod/service.log.%d{yyyyMMddHH}"
                         append="true">
                <PatternLayout pattern="[%level][%d{yyyy-MM-dd'T'HH:mm:ss.SSSXX}][%l] %msg%n" />
                <Policies>
                    <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
                </Policies>
            </RollingFile>
        </Appenders>
        <Loggers>
            <Root level="INFO">
                <AppenderRef ref="RollingFile"/>
            </Root>
        </Loggers>
    </SpringProfile>
    <SpringProfile name="!prod">
        <Appenders>
            <Console name="Console" target="SYSTEM_OUT">
                <PatternLayout pattern="[%level][%d{yyyy-MM-dd'T'HH:mm:ss.SSSXX}][%l] %msg%n" />
            </Console>
            <File name="File" fileName="./logs/service.log" append="false">
                <PatternLayout pattern="[%level][%d{yyyy-MM-dd'T'HH:mm:ss.SSSXX}][%l] %msg%n" />
            </File>
        </Appenders>
        <Loggers>
            <Root level="INFO">
                <AppenderRef ref="File"/>
                <!--When WIP, you could uncomment the next line to show log to console.-->
                <!--<AppenderRef ref="Console"/>-->
            </Root>
        </Loggers>
    </SpringProfile>
</Configuration>

项目中缺少对 Log4J2 的 spring 引导支持的依赖关系。您需要添加 org.apache.logging.log4j:log4j-spring-boot。将其添加为依赖项将启用 SpringProfile 标记的使用。(此功能从版本 2.15.0 开始可用(

有人可能会认为这是Spring Boot Log4J2集成的错误。

Apache Log4J2 和 Spring Framework 之间没有关系(或者至少我不知道(。

您使用的SpringProfile标记在 Log4J2 的 XML 架构中也不存在。

您必须使用不同的弹簧配置文件配置和不同的 Log4J2 配置。另一方面,Logback 和 Log4J2 是(几乎完全(不同的库,用于相同的日志记录目的。

你必须添加

<dependency>
   <groupId>org.apache.logging.log4j</groupId>
   <artifactId>log4j-spring-boot</artifactId>
</dependency>

相关内容

  • 没有找到相关文章

最新更新